Commit c60dc45b authored by Lionel Gauthier's avatar Lionel Gauthier

Changed uX, uX_t sX, sX_t to uinX_t

Cleaned some PDCP/driver code

types parameters and vars

Please see openair2/COMMON/platform_types.h for simple coding rules.

please declare prototypes of functions in .h and include .h files in where the function is used and where it is implemented.



git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5096 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 3ea520f7
#ifndef _OBJ_HASH_TABLE_H_ #ifndef _UTILS_COLLECTION_OBJ_HASH_TABLE_H_
#define _OBJ_HASH_TABLE_H_ #define _UTILS_COLLECTION_OBJ_HASH_TABLE_H_
#include<stdlib.h> #include<stdlib.h>
#include <stdint.h> #include <stdint.h>
#include <stddef.h> #include <stddef.h>
#include "hashtable.h" #include "collection/hashtable/hashtable.h"
typedef size_t hash_size_t;
typedef struct obj_hash_node_s { typedef struct obj_hash_node_s {
int key_size; int key_size;
...@@ -34,7 +31,5 @@ hashtable_rc_t obj_hashtable_get (obj_hash_table_t *hashtblP, const voi ...@@ -34,7 +31,5 @@ hashtable_rc_t obj_hashtable_get (obj_hash_table_t *hashtblP, const voi
hashtable_rc_t obj_hashtable_get_keys(obj_hash_table_t *hashtblP, void ** keysP, unsigned int *sizeP); hashtable_rc_t obj_hashtable_get_keys(obj_hash_table_t *hashtblP, void ** keysP, unsigned int *sizeP);
hashtable_rc_t obj_hashtable_resize (obj_hash_table_t *hashtblP, hash_size_t sizeP); hashtable_rc_t obj_hashtable_resize (obj_hash_table_t *hashtblP, hash_size_t sizeP);
#endif #endif
...@@ -24,7 +24,7 @@ pointer to the macphy_scheduler() routine*/ ...@@ -24,7 +24,7 @@ pointer to the macphy_scheduler() routine*/
void dummy_macphy_scheduler(u8 last_slot) void dummy_macphy_scheduler(uint8_t last_slot)
{ {
//if (last_slot == 0) //if (last_slot == 0)
// mac_xface->frame++; // mac_xface->frame++;
...@@ -47,7 +47,7 @@ void dummy_macphy_init(void ) ...@@ -47,7 +47,7 @@ void dummy_macphy_init(void )
msg("[OPENAIR][MAC XFACE] dummy_macphy_init(): no MAC registered!\n"); msg("[OPENAIR][MAC XFACE] dummy_macphy_init(): no MAC registered!\n");
} }
MAC_xface *mac_register(void macphy_scheduler(u8 last_slot), void macphy_setparams(void *),void macphy_init(void ),void mrbch_phy_sync_failure(unsigned char,unsigned char),void chbch_phy_sync_success(unsigned char,unsigned char)) { MAC_xface *mac_register(void macphy_scheduler(uint8_t last_slot), void macphy_setparams(void *),void macphy_init(void ),void mrbch_phy_sync_failure(unsigned char,unsigned char),void chbch_phy_sync_success(unsigned char,unsigned char)) {
if (openair_daq_vars.mac_registered == 0) { if (openair_daq_vars.mac_registered == 0) {
......
...@@ -891,9 +891,9 @@ unsigned char phy_threegpplte_turbo_decoder_scalar(llr_t *y, ...@@ -891,9 +891,9 @@ unsigned char phy_threegpplte_turbo_decoder_scalar(llr_t *y,
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24a(&decoded_bytes[F>>3], crc = crc24a(&decoded_bytes[F>>3],
n-24-F)>>8; n-24-F)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
// msg("CRC24_A = %x, oldcrc = %x (F %d)\n",crc,oldcrc,F); // msg("CRC24_A = %x, oldcrc = %x (F %d)\n",crc,oldcrc,F);
...@@ -902,9 +902,9 @@ unsigned char phy_threegpplte_turbo_decoder_scalar(llr_t *y, ...@@ -902,9 +902,9 @@ unsigned char phy_threegpplte_turbo_decoder_scalar(llr_t *y,
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24b(decoded_bytes, crc = crc24b(decoded_bytes,
n-24)>>8; n-24)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
// msg("CRC24_B = %x, oldcrc = %x\n",crc,oldcrc); // msg("CRC24_B = %x, oldcrc = %x\n",crc,oldcrc);
......
...@@ -1961,7 +1961,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y, ...@@ -1961,7 +1961,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
unsigned int i,j,iind;//,pi; unsigned int i,j,iind;//,pi;
unsigned char iteration_cnt=0; unsigned char iteration_cnt=0;
unsigned int crc,oldcrc,crc_len; unsigned int crc,oldcrc,crc_len;
u8 temp; uint8_t temp;
__m128i tmp128[(n+8)>>3]; __m128i tmp128[(n+8)>>3];
__m128i tmp, zeros=_mm_setzero_si128(); __m128i tmp, zeros=_mm_setzero_si128();
...@@ -2341,7 +2341,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y, ...@@ -2341,7 +2341,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
} }
#else #else
pi5_p=pi5tab[iind]; pi5_p=pi5tab[iind];
u16 decoded_bytes_interl[6144/16]; uint16_t decoded_bytes_interl[6144/16];
for (i=0;i<(n2>>4);i++) { for (i=0;i<(n2>>4);i++) {
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],0); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],0);
...@@ -2360,7 +2360,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y, ...@@ -2360,7 +2360,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],13); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],13);
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],14); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],14);
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],15); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],15);
//decoded_bytes_interl[i]=(u16) _mm_movemask_epi8(_mm_cmpgt_epi8(tmp,zeros)); //decoded_bytes_interl[i]=(uint16_t) _mm_movemask_epi8(_mm_cmpgt_epi8(tmp,zeros));
tmp128[i] = _mm_adds_epi8(((__m128i *)ext2)[i],((__m128i *)systematic2)[i]); tmp128[i] = _mm_adds_epi8(((__m128i *)ext2)[i],((__m128i *)systematic2)[i]);
((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]); ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]);
...@@ -2381,14 +2381,14 @@ unsigned char phy_threegpplte_turbo_decoder(short *y, ...@@ -2381,14 +2381,14 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
tmp2=_mm_and_si128(tmp,mask); tmp2=_mm_and_si128(tmp,mask);
tmp2=_mm_cmpeq_epi16(tmp2,mask); tmp2=_mm_cmpeq_epi16(tmp2,mask);
decoded_bytes[n_128*0+i]=(u8) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros)); decoded_bytes[n_128*0+i]=(uint8_t) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros));
int j; int j;
for (j=1; j<16; j++) { for (j=1; j<16; j++) {
mask=_mm_slli_epi16(mask,1); mask=_mm_slli_epi16(mask,1);
tmp2=_mm_and_si128(tmp,mask); tmp2=_mm_and_si128(tmp,mask);
tmp2=_mm_cmpeq_epi16(tmp2,mask); tmp2=_mm_cmpeq_epi16(tmp2,mask);
decoded_bytes[n_128*j +i]=(u8) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros)); decoded_bytes[n_128*j +i]=(uint8_t) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros));
} }
} }
} }
...@@ -2430,17 +2430,17 @@ unsigned char phy_threegpplte_turbo_decoder(short *y, ...@@ -2430,17 +2430,17 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24a(&decoded_bytes[F>>3], crc = crc24a(&decoded_bytes[F>>3],
n-24-F)>>8; n-24-F)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
break; break;
case CRC24_B: case CRC24_B:
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24b(decoded_bytes, crc = crc24b(decoded_bytes,
n-24)>>8; n-24)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
break; break;
case CRC16: case CRC16:
oldcrc&=0x0000ffff; oldcrc&=0x0000ffff;
......
...@@ -658,7 +658,7 @@ unsigned char phy_threegpplte_turbo_decoder16(short *y, ...@@ -658,7 +658,7 @@ unsigned char phy_threegpplte_turbo_decoder16(short *y,
unsigned int i,j,iind;//,pi; unsigned int i,j,iind;//,pi;
unsigned char iteration_cnt=0; unsigned char iteration_cnt=0;
unsigned int crc,oldcrc,crc_len; unsigned int crc,oldcrc,crc_len;
u8 temp; uint8_t temp;
__m128i tmp, zeros=_mm_setzero_si128(); __m128i tmp, zeros=_mm_setzero_si128();
...@@ -875,17 +875,17 @@ unsigned char phy_threegpplte_turbo_decoder16(short *y, ...@@ -875,17 +875,17 @@ unsigned char phy_threegpplte_turbo_decoder16(short *y,
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24a(&decoded_bytes[F>>3], crc = crc24a(&decoded_bytes[F>>3],
n-24-F)>>8; n-24-F)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
break; break;
case CRC24_B: case CRC24_B:
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24b(decoded_bytes, crc = crc24b(decoded_bytes,
n-24)>>8; n-24)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
break; break;
case CRC16: case CRC16:
oldcrc&=0x0000ffff; oldcrc&=0x0000ffff;
......
...@@ -605,7 +605,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y, ...@@ -605,7 +605,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
unsigned int i,j,iind;//,pi; unsigned int i,j,iind;//,pi;
unsigned char iteration_cnt=0; unsigned char iteration_cnt=0;
unsigned int crc,oldcrc,crc_len; unsigned int crc,oldcrc,crc_len;
u8 temp; uint8_t temp;
__m128i tmp128[(n+8)>>3]; __m128i tmp128[(n+8)>>3];
__m128i tmp, zeros=_mm_setzero_si128(); __m128i tmp, zeros=_mm_setzero_si128();
...@@ -873,7 +873,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y, ...@@ -873,7 +873,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
pi5_p=pi5tab8[iind]; pi5_p=pi5tab8[iind];
u16 decoded_bytes_interl[6144/16] __attribute__((aligned(16))); uint16_t decoded_bytes_interl[6144/16] __attribute__((aligned(16)));
if ((n2&0x7f) == 0) { // n2 is a multiple of 128 bits if ((n2&0x7f) == 0) { // n2 is a multiple of 128 bits
for (i=0;i<(n2>>4);i++) { for (i=0;i<(n2>>4);i++) {
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],0); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],0);
...@@ -892,7 +892,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y, ...@@ -892,7 +892,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],13); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],13);
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],14); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],14);
tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],15); tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],15);
decoded_bytes_interl[i]=(u16) _mm_movemask_epi8(_mm_cmpgt_epi8(tmp,zeros)); decoded_bytes_interl[i]=(uint16_t) _mm_movemask_epi8(_mm_cmpgt_epi8(tmp,zeros));
((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]); ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]);
} }
} }
...@@ -939,14 +939,14 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y, ...@@ -939,14 +939,14 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
tmp2=_mm_and_si128(tmp,mask); tmp2=_mm_and_si128(tmp,mask);
tmp2=_mm_cmpeq_epi16(tmp2,mask); tmp2=_mm_cmpeq_epi16(tmp2,mask);
decoded_bytes[n_128*0+i]=(u8) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros)); decoded_bytes[n_128*0+i]=(uint8_t) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros));
int j; int j;
for (j=1; j<16; j++) { for (j=1; j<16; j++) {
mask=_mm_slli_epi16(mask,1); mask=_mm_slli_epi16(mask,1);
tmp2=_mm_and_si128(tmp,mask); tmp2=_mm_and_si128(tmp,mask);
tmp2=_mm_cmpeq_epi16(tmp2,mask); tmp2=_mm_cmpeq_epi16(tmp2,mask);
decoded_bytes[n_128*j +i]=(u8) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros)); decoded_bytes[n_128*j +i]=(uint8_t) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros));
} }
} }
} }
...@@ -981,17 +981,17 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y, ...@@ -981,17 +981,17 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24a(&decoded_bytes[F>>3], crc = crc24a(&decoded_bytes[F>>3],
n-24-F)>>8; n-24-F)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
break; break;
case CRC24_B: case CRC24_B:
oldcrc&=0x00ffffff; oldcrc&=0x00ffffff;
crc = crc24b(decoded_bytes, crc = crc24b(decoded_bytes,
n-24)>>8; n-24)>>8;
temp=((u8 *)&crc)[2]; temp=((uint8_t *)&crc)[2];
((u8 *)&crc)[2] = ((u8 *)&crc)[0]; ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
((u8 *)&crc)[0] = temp; ((uint8_t *)&crc)[0] = temp;
break; break;
case CRC16: case CRC16:
oldcrc&=0x0000ffff; oldcrc&=0x0000ffff;
......
...@@ -41,7 +41,7 @@ PHY_VARS_UE *PHY_vars_UE; ...@@ -41,7 +41,7 @@ PHY_VARS_UE *PHY_vars_UE;
DCI2_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2; DCI2_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2;
channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX]; channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX];
void lte_param_init(unsigned char N_tx, unsigned char N_rx,unsigned char transmission_mode,unsigned char extended_prefix_flag,u16 Nid_cell,u8 tdd_config) { void lte_param_init(unsigned char N_tx, unsigned char N_rx,unsigned char transmission_mode,unsigned char extended_prefix_flag,uint16_t Nid_cell,uint8_t tdd_config) {
unsigned int ind; unsigned int ind;
LTE_DL_FRAME_PARMS *lte_frame_parms; LTE_DL_FRAME_PARMS *lte_frame_parms;
......
...@@ -12,12 +12,6 @@ ...@@ -12,12 +12,6 @@
#include "PHY/defs.h" #include "PHY/defs.h"
#else #else
#include "PHY/TOOLS/time_meas.h" #include "PHY/TOOLS/time_meas.h"
#define u32 uint32_t
#define s32 int32_t
#define u16 uint16_t
#define s16 int16_t
#define u8 uint8_t
#define s8 int8_t
#endif #endif
#define CRC24_A 0 #define CRC24_A 0
...@@ -379,7 +373,7 @@ void phy_viterbi_dot11_sse2(int8_t *y,uint8_t *decoded_bytes,uint16_t n); ...@@ -379,7 +373,7 @@ void phy_viterbi_dot11_sse2(int8_t *y,uint8_t *decoded_bytes,uint16_t n);
@param decoded_bytes Pointer to decoded output @param decoded_bytes Pointer to decoded output
@param n Length of input/trellis depth in bits*/ @param n Length of input/trellis depth in bits*/
//void phy_viterbi_lte_sse2(int8_t *y,uint8_t *decoded_bytes,uint16_t n); //void phy_viterbi_lte_sse2(int8_t *y,uint8_t *decoded_bytes,uint16_t n);
void phy_viterbi_lte_sse2(s8 *y,u8 *decoded_bytes,u16 n); void phy_viterbi_lte_sse2(int8_t *y,uint8_t *decoded_bytes,uint16_t n);
/*!\fn void phy_generate_viterbi_tables(void) /*!\fn void phy_generate_viterbi_tables(void)
\brief This routine initializes metric tables for the optimized Viterbi decoder. \brief This routine initializes metric tables for the optimized Viterbi decoder.
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
//#define cmin(a,b) ((a)<(b) ? (a) : (b)) //#define cmin(a,b) ((a)<(b) ? (a) : (b))
static u32 bitrev[32] = {0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31}; static uint32_t bitrev[32] = {0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31};
static u32 bitrev_x3[32] = {0,48,24,72,12,60,36,84,6,54,30,78,18,66,42,90,3,51,27,75,15,63,39,87,9,57,33,81,21,69,45,93}; static uint32_t bitrev_x3[32] = {0,48,24,72,12,60,36,84,6,54,30,78,18,66,42,90,3,51,27,75,15,63,39,87,9,57,33,81,21,69,45,93};
static uint32_t bitrev_cc[32] = {1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31,0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30}; static uint32_t bitrev_cc[32] = {1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31,0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30};
//#define RM_DEBUG_TX 1 //#define RM_DEBUG_TX 1
...@@ -323,7 +323,7 @@ uint32_t generate_dummy_w_cc(uint32_t D, uint8_t *w){ ...@@ -323,7 +323,7 @@ uint32_t generate_dummy_w_cc(uint32_t D, uint8_t *w){
uint32_t RCC = (D>>5), ND; uint32_t RCC = (D>>5), ND;
uint32_t col,Kpi,index; uint32_t col,Kpi,index;
s32 k; int32_t k;
#ifdef RM_DEBUG_CC #ifdef RM_DEBUG_CC
uint32_t nulled=0; uint32_t nulled=0;
#endif #endif
...@@ -562,14 +562,14 @@ printf("threed %d\n",threed); ...@@ -562,14 +562,14 @@ printf("threed %d\n",threed);
uint32_t lte_rate_matching_cc(uint32_t RCC, uint32_t lte_rate_matching_cc(uint32_t RCC,
u16 E, uint16_t E,
uint8_t *w, uint8_t *w,
uint8_t *e) { uint8_t *e) {
uint32_t ind=0,k; uint32_t ind=0,k;
u16 Kw = 3*(RCC<<5); uint16_t Kw = 3*(RCC<<5);
#ifdef RM_DEBUG_CC #ifdef RM_DEBUG_CC
uint32_t nulled=0; uint32_t nulled=0;
...@@ -627,7 +627,7 @@ int lte_rate_matching_turbo_rx(uint32_t RTC, ...@@ -627,7 +627,7 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
uint32_t Nir,Ncb,Gp,GpmodC,E,Ncbmod,ind,k; uint32_t Nir,Ncb,Gp,GpmodC,E,Ncbmod,ind,k;
int16_t *soft_input2; int16_t *soft_input2;
// s32 w_tmp; // int32_t w_tmp;
#ifdef RM_DEBUG #ifdef RM_DEBUG
int nulled=0; int nulled=0;
#endif #endif
...@@ -745,7 +745,7 @@ int lte_rate_matching_turbo_rx(uint32_t RTC, ...@@ -745,7 +745,7 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
void lte_rate_matching_cc_rx(uint32_t RCC, void lte_rate_matching_cc_rx(uint32_t RCC,
u16 E, uint16_t E,
int8_t *w, int8_t *w,
uint8_t *dummy_w, uint8_t *dummy_w,
int8_t *soft_input) { int8_t *soft_input) {
...@@ -753,7 +753,7 @@ void lte_rate_matching_cc_rx(uint32_t RCC, ...@@ -753,7 +753,7 @@ void lte_rate_matching_cc_rx(uint32_t RCC,
uint32_t ind=0,k; uint32_t ind=0,k;
u16 Kw = 3*(RCC<<5); uint16_t Kw = 3*(RCC<<5);
uint32_t acc=1; uint32_t acc=1;
int16_t w16[Kw]; int16_t w16[Kw];
#ifdef RM_DEBUG_CC #ifdef RM_DEBUG_CC
......
...@@ -125,9 +125,9 @@ int lte_segmentation(unsigned char *input_buffer, ...@@ -125,9 +125,9 @@ int lte_segmentation(unsigned char *input_buffer,
if (*C > 1) { // add CRC if (*C > 1) { // add CRC
crc = crc24b(output_buffers[r],Kr-24)>>8; crc = crc24b(output_buffers[r],Kr-24)>>8;
output_buffers[r][(Kr-24)>>3] = ((u8*)&crc)[2]; output_buffers[r][(Kr-24)>>3] = ((uint8_t*)&crc)[2];
output_buffers[r][1+((Kr-24)>>3)] = ((u8*)&crc)[1]; output_buffers[r][1+((Kr-24)>>3)] = ((uint8_t*)&crc)[1];
output_buffers[r][2+((Kr-24)>>3)] = ((u8*)&crc)[0]; output_buffers[r][2+((Kr-24)>>3)] = ((uint8_t*)&crc)[0];
#ifdef DEBUG_SEGMENTATION #ifdef DEBUG_SEGMENTATION
printf("Segment %d : CRC %x\n",r,crc); printf("Segment %d : CRC %x\n",r,crc);
#endif #endif
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include "emmintrin.h" #include "emmintrin.h"
#endif //EXPRESSMIMO_TARGET #endif //EXPRESSMIMO_TARGET
extern u8 ccodelte_table[128],ccodelte_table_rev[128]; extern uint8_t ccodelte_table[128],ccodelte_table_rev[128];
...@@ -36,15 +36,15 @@ extern u8 ccodelte_table[128],ccodelte_table_rev[128]; ...@@ -36,15 +36,15 @@ extern u8 ccodelte_table[128],ccodelte_table_rev[128];
#ifndef EXPRESSMIMO_TARGET #ifndef EXPRESSMIMO_TARGET
static s8 m0_table[64*16*16*16] __attribute__ ((aligned(16))); static int8_t m0_table[64*16*16*16] __attribute__ ((aligned(16)));
static s8 m1_table[64*16*16*16] __attribute__ ((aligned(16))); static int8_t m1_table[64*16*16*16] __attribute__ ((aligned(16)));
// Set up Viterbi tables for SSE2 implementation // Set up Viterbi tables for SSE2 implementation
void phy_generate_viterbi_tables_lte() { void phy_generate_viterbi_tables_lte() {
s8 w[8],in0,in1,in2; int8_t w[8],in0,in1,in2;
u8 state,index0,index1; uint8_t state,index0,index1;
for (in0 = -8; in0 <8 ; in0++) { // use 4-bit quantization for (in0 = -8; in0 <8 ; in0++) { // use 4-bit quantization
for (in1 = -8; in1 <8 ;in1++) { for (in1 = -8; in1 <8 ;in1++) {
...@@ -91,7 +91,7 @@ void phy_generate_viterbi_tables_lte() { ...@@ -91,7 +91,7 @@ void phy_generate_viterbi_tables_lte() {
#ifdef DEBUG_VITERBI #ifdef DEBUG_VITERBI
void print_bytes(char *s,__m128i *x) { void print_bytes(char *s,__m128i *x) {
u8 *tempb = (u8 *)x; uint8_t *tempb = (uint8_t *)x;
printf("%s : %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",s, printf("%s : %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",s,
tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7], tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7],
...@@ -102,7 +102,7 @@ void print_bytes(char *s,__m128i *x) { ...@@ -102,7 +102,7 @@ void print_bytes(char *s,__m128i *x) {
/* /*
void print_shorts(__m128i x,char *s) { void print_shorts(__m128i x,char *s) {
s16 *tempb = (s16 *)&x; int16_t *tempb = (int16_t *)&x;
printf("%s : %d,%d,%d,%d,%d,%d,%d,%d\n",s, printf("%s : %d,%d,%d,%d,%d,%d,%d,%d\n",s,
tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7] tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7]
...@@ -119,18 +119,18 @@ static __m128i metrics0_15,metrics16_31,metrics32_47,metrics48_63,even0_30a,even ...@@ -119,18 +119,18 @@ static __m128i metrics0_15,metrics16_31,metrics32_47,metrics48_63,even0_30a,even
static __m128i min_state,min_state2;// __attribute__((aligned(16))); static __m128i min_state,min_state2;// __attribute__((aligned(16)));
void phy_viterbi_lte_sse2(s8 *y,u8 *decoded_bytes,u16 n) { void phy_viterbi_lte_sse2(int8_t *y,uint8_t *decoded_bytes,uint16_t n) {
static __m128i *m0_ptr,*m1_ptr,*TB_ptr = &TB[0]; static __m128i *m0_ptr,*m1_ptr,*TB_ptr = &TB[0];
s8 *in = y; int8_t *in = y;
u8 prev_state0,maxm,s; uint8_t prev_state0,maxm,s;
static u8 *TB_ptr2; static uint8_t *TB_ptr2;
u32 table_offset; uint32_t table_offset;
u8 iter; uint8_t iter;
s16 position; int16_t position;
// set initial metrics // set initial metrics
//debug_msg("Doing viterbi\n"); //debug_msg("Doing viterbi\n");
...@@ -334,31 +334,31 @@ void phy_viterbi_lte_sse2(s8 *y,u8 *decoded_bytes,u16 n) { ...@@ -334,31 +334,31 @@ void phy_viterbi_lte_sse2(s8 *y,u8 *decoded_bytes,u16 n) {
maxm = 0; maxm = 0;
for (s=0;s<16;s++) for (s=0;s<16;s++)
if (((u8 *)&metrics0_15)[s] > maxm) { if (((uint8_t *)&metrics0_15)[s] > maxm) {
maxm = ((u8 *)&metrics0_15)[s]; maxm = ((uint8_t *)&metrics0_15)[s];
prev_state0 = s; prev_state0 = s;
} }
for (s=0;s<16;s++) for (s=0;s<16;s++)
if (((u8 *)&metrics16_31)[s] > maxm) { if (((uint8_t *)&metrics16_31)[s] > maxm) {
maxm = ((u8 *)&metrics16_31)[s]; maxm = ((uint8_t *)&metrics16_31)[s];
prev_state0 = s+16; prev_state0 = s+16;
} }
for (s=0;s<16;s++) for (s=0;s<16;s++)
if (((u8 *)&metrics32_47)[s] > maxm) { if (((uint8_t *)&metrics32_47)[s] > maxm) {
maxm = ((u8 *)&metrics32_47)[s]; maxm = ((uint8_t *)&metrics32_47)[s];
prev_state0 = s+32; prev_state0 = s+32;
} }
for (s=0;s<16;s++) for (s=0;s<16;s++)
if (((u8 *)&metrics48_63)[s] > maxm) { if (((uint8_t *)&metrics48_63)[s] > maxm) {
maxm = ((u8 *)&metrics48_63)[s]; maxm = ((uint8_t *)&metrics48_63)[s];
prev_state0 = s+48; prev_state0 = s+48;
} }
// printf("Max state %d\n",prev_state0); // printf("Max state %d\n",prev_state0);
TB_ptr2 = (u8 *)&TB[(n-1)*4]; TB_ptr2 = (uint8_t *)&TB[(n-1)*4];
for (position = n-1 ; position>-1; position--) { for (position = n-1 ; position>-1; position--) {
// if ((position%8) == 0) // if ((position%8) == 0)
...@@ -383,15 +383,15 @@ void phy_viterbi_lte_sse2(s8 *y,u8 *decoded_bytes,u16 n) { ...@@ -383,15 +383,15 @@ void phy_viterbi_lte_sse2(s8 *y,u8 *decoded_bytes,u16 n) {
#else //EXPRESSMIMO_TARGET #else //EXPRESSMIMO_TARGET
void phy_viterbi_lte(s8 *y,u8 *decoded_bytes,u16 n) { void phy_viterbi_lte(int8_t *y,uint8_t *decoded_bytes,uint16_t n) {
} }
#endif //EXPRESSMIMO_TARGET #endif //EXPRESSMIMO_TARGET
/* /*
void print_bytes(__m128i x,s8 *s) { void print_bytes(__m128i x,int8_t *s) {
u8 *tempb = (u8 *)&x; uint8_t *tempb = (uint8_t *)&x;
printf("%s : %u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u\n",s, printf("%s : %u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u\n",s,
tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7], tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7],
...@@ -401,15 +401,15 @@ void print_bytes(__m128i x,s8 *s) { ...@@ -401,15 +401,15 @@ void print_bytes(__m128i x,s8 *s) {
*/ */
#ifdef TEST_DEBUG #ifdef TEST_DEBUG
int test_viterbi(u8 dabflag) int test_viterbi(uint8_t dabflag)
{ {
u8 test[8]; uint8_t test[8];
//_declspec(align(16)) s8 channel_output[512]; //_declspec(align(16)) int8_t channel_output[512];
//_declspec(align(16)) u8 output[512],decoded_output[16], *inPtr, *outPtr; //_declspec(align(16)) uint8_t output[512],decoded_output[16], *inPtr, *outPtr;
s8 channel_output[512]; int8_t channel_output[512];
u8 output[512],decoded_output[16], *inPtr, *outPtr; uint8_t output[512],decoded_output[16], *inPtr, *outPtr;
u32 i; uint32_t i;
test[0] = 7; test[0] = 7;
...@@ -456,7 +456,7 @@ int test_viterbi(u8 dabflag) ...@@ -456,7 +456,7 @@ int test_viterbi(u8 dabflag)
int main(int argc, char **argv) { int main(int argc, char **argv) {
char c; char c;
u8 dabflag=0; uint8_t dabflag=0;
while ((c = getopt (argc, argv, "d")) != -1) { while ((c = getopt (argc, argv, "d")) != -1) {
if (c=='d') if (c=='d')
......
This diff is collapsed.
...@@ -21,16 +21,16 @@ ...@@ -21,16 +21,16 @@
#include "UTIL/LOG/vcd_signal_dumper.h" #include "UTIL/LOG/vcd_signal_dumper.h"
//#define DEBUG_PHY //#define DEBUG_PHY
extern u16 prach_root_sequence_map0_3[838]; extern uint16_t prach_root_sequence_map0_3[838];
extern u16 prach_root_sequence_map4[138]; extern uint16_t prach_root_sequence_map4[138];
uint8_t dmrs1_tab[8] = {0,2,3,4,6,8,9,10}; uint8_t dmrs1_tab[8] = {0,2,3,4,6,8,9,10};
void phy_config_mib(LTE_DL_FRAME_PARMS *lte_frame_parms, void phy_config_mib(LTE_DL_FRAME_PARMS *lte_frame_parms,
u8 N_RB_DL, uint8_t N_RB_DL,
u8 Nid_cell, uint8_t Nid_cell,
u8 Ncp, uint8_t Ncp,
u8 frame_type, uint8_t frame_type,
u8 p_eNB, uint8_t p_eNB,
PHICH_CONFIG_COMMON *phich_config) { PHICH_CONFIG_COMMON *phich_config) {
lte_frame_parms->N_RB_DL = N_RB_DL; lte_frame_parms->N_RB_DL = N_RB_DL;
...@@ -43,10 +43,10 @@ void phy_config_mib(LTE_DL_FRAME_PARMS *lte_frame_parms, ...@@ -43,10 +43,10 @@ void phy_config_mib(LTE_DL_FRAME_PARMS *lte_frame_parms,
lte_frame_parms->phich_config_common.phich_duration = phich_config->phich_duration; lte_frame_parms->phich_config_common.phich_duration = phich_config->phich_duration;
} }
void phy_config_sib1_eNB(u8 Mod_id, void phy_config_sib1_eNB(uint8_t Mod_id,
TDD_Config_t *tdd_Config, TDD_Config_t *tdd_Config,
u8 SIwindowsize, uint8_t SIwindowsize,
u16 SIPeriod) { uint16_t SIPeriod) {
LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_eNB_g[Mod_id]->lte_frame_parms; LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_eNB_g[Mod_id]->lte_frame_parms;
...@@ -58,10 +58,10 @@ void phy_config_sib1_eNB(u8 Mod_id, ...@@ -58,10 +58,10 @@ void phy_config_sib1_eNB(u8 Mod_id,
lte_frame_parms->SIPeriod = SIPeriod; lte_frame_parms->SIPeriod = SIPeriod;
} }
void phy_config_sib1_ue(u8 Mod_id,u8 CH_index, void phy_config_sib1_ue(uint8_t Mod_id,uint8_t CH_index,
TDD_Config_t *tdd_Config, TDD_Config_t *tdd_Config,
u8 SIwindowsize, uint8_t SIwindowsize,
u16 SIperiod) { uint16_t SIperiod) {
LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_UE_g[Mod_id]->lte_frame_parms; LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_UE_g[Mod_id]->lte_frame_parms;
if (tdd_Config) { if (tdd_Config) {
...@@ -72,7 +72,7 @@ void phy_config_sib1_ue(u8 Mod_id,u8 CH_index, ...@@ -72,7 +72,7 @@ void phy_config_sib1_ue(u8 Mod_id,u8 CH_index,
lte_frame_parms->SIPeriod = SIperiod; lte_frame_parms->SIPeriod = SIperiod;
} }
void phy_config_sib2_eNB(u8 Mod_id, void phy_config_sib2_eNB(uint8_t Mod_id,
RadioResourceConfigCommonSIB_t *radioResourceConfigCommon, RadioResourceConfigCommonSIB_t *radioResourceConfigCommon,
ARFCN_ValueEUTRA_t *ul_CArrierFreq, ARFCN_ValueEUTRA_t *ul_CArrierFreq,
long *ul_Bandwidth, long *ul_Bandwidth,
...@@ -196,7 +196,7 @@ void phy_config_sib2_eNB(u8 Mod_id, ...@@ -196,7 +196,7 @@ void phy_config_sib2_eNB(u8 Mod_id,
} }
void phy_config_sib2_ue(u8 Mod_id,u8 CH_index, void phy_config_sib2_ue(uint8_t Mod_id,uint8_t CH_index,
RadioResourceConfigCommonSIB_t *radioResourceConfigCommon, RadioResourceConfigCommonSIB_t *radioResourceConfigCommon,
ARFCN_ValueEUTRA_t *ul_CarrierFreq, ARFCN_ValueEUTRA_t *ul_CarrierFreq,
long *ul_Bandwidth, long *ul_Bandwidth,
...@@ -307,7 +307,7 @@ lte_frame_parms->ul_power_control_config_common.deltaF_PUCCH_Format1 = radioRes ...@@ -307,7 +307,7 @@ lte_frame_parms->ul_power_control_config_common.deltaF_PUCCH_Format1 = radioRes
} }
void phy_config_sib13_ue(u8 Mod_id,u8 CH_index,int mbsfn_Area_idx, void phy_config_sib13_ue(uint8_t Mod_id,uint8_t CH_index,int mbsfn_Area_idx,
long mbsfn_AreaId_r9) { long mbsfn_AreaId_r9) {
LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_UE_g[Mod_id]->lte_frame_parms; LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_UE_g[Mod_id]->lte_frame_parms;
...@@ -325,7 +325,7 @@ void phy_config_sib13_ue(u8 Mod_id,u8 CH_index,int mbsfn_Area_idx, ...@@ -325,7 +325,7 @@ void phy_config_sib13_ue(u8 Mod_id,u8 CH_index,int mbsfn_Area_idx,
} }
void phy_config_sib13_eNB(u8 Mod_id,int mbsfn_Area_idx, void phy_config_sib13_eNB(uint8_t Mod_id,int mbsfn_Area_idx,
long mbsfn_AreaId_r9) { long mbsfn_AreaId_r9) {
LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_eNB_g[Mod_id]->lte_frame_parms; LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_eNB_g[Mod_id]->lte_frame_parms;
...@@ -344,7 +344,7 @@ void phy_config_sib13_eNB(u8 Mod_id,int mbsfn_Area_idx, ...@@ -344,7 +344,7 @@ void phy_config_sib13_eNB(u8 Mod_id,int mbsfn_Area_idx,
void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB) { void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB) {
u8 UE_id; uint8_t UE_id;
struct PhysicalConfigDedicated *physicalConfigDedicated; struct PhysicalConfigDedicated *physicalConfigDedicated;
for (UE_id=0;UE_id<NUMBER_OF_UE_MAX;UE_id++) { for (UE_id=0;UE_id<NUMBER_OF_UE_MAX;UE_id++) {
...@@ -433,7 +433,7 @@ void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB) { ...@@ -433,7 +433,7 @@ void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB) {
/* /*
* Configures UE MAC and PHY with radioResourceCommon received in mobilityControlInfo IE during Handover * Configures UE MAC and PHY with radioResourceCommon received in mobilityControlInfo IE during Handover
*/ */
void phy_config_afterHO_ue(u8 Mod_id,u8 eNB_id, MobilityControlInfo_t *mobilityControlInfo, u8 ho_failed) { void phy_config_afterHO_ue(uint8_t Mod_id,uint8_t eNB_id, MobilityControlInfo_t *mobilityControlInfo, uint8_t ho_failed) {
if(mobilityControlInfo!=NULL) { if(mobilityControlInfo!=NULL) {
RadioResourceConfigCommon_t *radioResourceConfigCommon = &mobilityControlInfo->radioResourceConfigCommon; RadioResourceConfigCommon_t *radioResourceConfigCommon = &mobilityControlInfo->radioResourceConfigCommon;
...@@ -446,7 +446,7 @@ void phy_config_afterHO_ue(u8 Mod_id,u8 eNB_id, MobilityControlInfo_t *mobilityC ...@@ -446,7 +446,7 @@ void phy_config_afterHO_ue(u8 Mod_id,u8 eNB_id, MobilityControlInfo_t *mobilityC
LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_UE_g[Mod_id]->lte_frame_parms; LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_UE_g[Mod_id]->lte_frame_parms;
// int N_ZC; // int N_ZC;
// u8 prach_fmt; // uint8_t prach_fmt;
// int u; // int u;
LOG_I(PHY,"[UE%d] Frame %d: Handover triggered: Applying radioResourceConfigCommon from eNB %d\n", LOG_I(PHY,"[UE%d] Frame %d: Handover triggered: Applying radioResourceConfigCommon from eNB %d\n",
...@@ -543,7 +543,7 @@ void phy_config_afterHO_ue(u8 Mod_id,u8 eNB_id, MobilityControlInfo_t *mobilityC ...@@ -543,7 +543,7 @@ void phy_config_afterHO_ue(u8 Mod_id,u8 eNB_id, MobilityControlInfo_t *mobilityC
} }
} }
void phy_config_meas_ue(u8 Mod_id,u8 eNB_index,u8 n_adj_cells,unsigned int *adj_cell_id) { void phy_config_meas_ue(uint8_t Mod_id,uint8_t eNB_index,uint8_t n_adj_cells,unsigned int *adj_cell_id) {
PHY_MEASUREMENTS *phy_meas = &PHY_vars_UE_g[Mod_id]->PHY_measurements; PHY_MEASUREMENTS *phy_meas = &PHY_vars_UE_g[Mod_id]->PHY_measurements;
int i; int i;
...@@ -558,11 +558,11 @@ void phy_config_meas_ue(u8 Mod_id,u8 eNB_index,u8 n_adj_cells,unsigned int *adj_ ...@@ -558,11 +558,11 @@ void phy_config_meas_ue(u8 Mod_id,u8 eNB_index,u8 n_adj_cells,unsigned int *adj_
} }
void phy_config_dedicated_eNB(u8 Mod_id,u16 rnti, void phy_config_dedicated_eNB(uint8_t Mod_id,uint16_t rnti,
struct PhysicalConfigDedicated *physicalConfigDedicated) { struct PhysicalConfigDedicated *physicalConfigDedicated) {
PHY_VARS_eNB *phy_vars_eNB = PHY_vars_eNB_g[Mod_id]; PHY_VARS_eNB *phy_vars_eNB = PHY_vars_eNB_g[Mod_id];
u8 UE_id = find_ue(rnti,phy_vars_eNB); uint8_t UE_id = find_ue(rnti,phy_vars_eNB);
...@@ -577,7 +577,7 @@ void phy_config_dedicated_eNB(u8 Mod_id,u16 rnti, ...@@ -577,7 +577,7 @@ void phy_config_dedicated_eNB(u8 Mod_id,u16 rnti,
} }
void phy_config_dedicated_ue(u8 Mod_id,u8 CH_index, void phy_config_dedicated_ue(uint8_t Mod_id,uint8_t CH_index,
struct PhysicalConfigDedicated *physicalConfigDedicated ) { struct PhysicalConfigDedicated *physicalConfigDedicated ) {
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
...@@ -671,8 +671,8 @@ void phy_config_dedicated_ue(u8 Mod_id,u8 CH_index, ...@@ -671,8 +671,8 @@ void phy_config_dedicated_ue(u8 Mod_id,u8 CH_index,
} }
#ifdef CBA #ifdef CBA
if (physicalConfigDedicated->pusch_CBAConfigDedicated_vlola){ if (physicalConfigDedicated->pusch_CBAConfigDedicated_vlola){
phy_vars_ue->pusch_ca_config_dedicated[CH_index].betaOffset_CA_Index = (u16) *physicalConfigDedicated->pusch_CBAConfigDedicated_vlola->betaOffset_CBA_Index; phy_vars_ue->pusch_ca_config_dedicated[CH_index].betaOffset_CA_Index = (uint16_t) *physicalConfigDedicated->pusch_CBAConfigDedicated_vlola->betaOffset_CBA_Index;
phy_vars_ue->pusch_ca_config_dedicated[CH_index].cShift = (u16) *physicalConfigDedicated->pusch_CBAConfigDedicated_vlola->cShift_CBA; phy_vars_ue->pusch_ca_config_dedicated[CH_index].cShift = (uint16_t) *physicalConfigDedicated->pusch_CBAConfigDedicated_vlola->cShift_CBA;
LOG_D(PHY,"[UE %d ] physicalConfigDedicated pusch CBA config dedicated: beta offset %d cshift %d \n",Mod_id, LOG_D(PHY,"[UE %d ] physicalConfigDedicated pusch CBA config dedicated: beta offset %d cshift %d \n",Mod_id,
phy_vars_ue->pusch_ca_config_dedicated[CH_index].betaOffset_CA_Index, phy_vars_ue->pusch_ca_config_dedicated[CH_index].betaOffset_CA_Index,
phy_vars_ue->pusch_ca_config_dedicated[CH_index].cShift); phy_vars_ue->pusch_ca_config_dedicated[CH_index].cShift);
...@@ -686,8 +686,8 @@ void phy_config_dedicated_ue(u8 Mod_id,u8 CH_index, ...@@ -686,8 +686,8 @@ void phy_config_dedicated_ue(u8 Mod_id,u8 CH_index,
} }
void phy_config_cba_rnti (u8 Mod_id,u8 eNB_flag, u8 index, u16 cba_rnti, u8 cba_group_id, u8 num_active_cba_groups){ void phy_config_cba_rnti (module_id_t Mod_id,eNB_flag_t eNB_flag, uint8_t index, rnti_t cba_rnti, uint8_t cba_group_id, uint8_t num_active_cba_groups){
// u8 i; // uint8_t i;
if (eNB_flag == 0 ) { if (eNB_flag == 0 ) {
//LOG_D(PHY,"[UE %d] configure cba group %d with rnti %x, num active cba grp %d\n", index, index, cba_rnti, num_active_cba_groups); //LOG_D(PHY,"[UE %d] configure cba group %d with rnti %x, num active cba grp %d\n", index, index, cba_rnti, num_active_cba_groups);
...@@ -740,7 +740,7 @@ void phy_init_lte_top(LTE_DL_FRAME_PARMS *lte_frame_parms) { ...@@ -740,7 +740,7 @@ void phy_init_lte_top(LTE_DL_FRAME_PARMS *lte_frame_parms) {
int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue, int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
int nb_connected_eNB, int nb_connected_eNB,
u8 abstraction_flag) { uint8_t abstraction_flag) {
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms;
LTE_UE_COMMON *ue_common_vars = &phy_vars_ue->lte_ue_common_vars; LTE_UE_COMMON *ue_common_vars = &phy_vars_ue->lte_ue_common_vars;
...@@ -1244,7 +1244,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue, ...@@ -1244,7 +1244,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
ue_pdcch_vars[eNB_id]->llr16 = (unsigned short *)malloc16(2*4*frame_parms->N_RB_DL*12*sizeof(unsigned short)); ue_pdcch_vars[eNB_id]->llr16 = (unsigned short *)malloc16(2*4*frame_parms->N_RB_DL*12*sizeof(unsigned short));
ue_pdcch_vars[eNB_id]->wbar = (unsigned short *)malloc16(4*frame_parms->N_RB_DL*12*sizeof(unsigned short)); ue_pdcch_vars[eNB_id]->wbar = (unsigned short *)malloc16(4*frame_parms->N_RB_DL*12*sizeof(unsigned short));
ue_pdcch_vars[eNB_id]->e_rx = (s8 *)malloc16(4*2*frame_parms->N_RB_DL*12*sizeof(unsigned char)); ue_pdcch_vars[eNB_id]->e_rx = (int8_t *)malloc16(4*2*frame_parms->N_RB_DL*12*sizeof(unsigned char));
// PBCH // PBCH
ue_pbch_vars[eNB_id] = (LTE_UE_PBCH *)malloc16(sizeof(LTE_UE_PBCH)); ue_pbch_vars[eNB_id] = (LTE_UE_PBCH *)malloc16(sizeof(LTE_UE_PBCH));
...@@ -1260,7 +1260,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue, ...@@ -1260,7 +1260,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
ue_pbch_vars[eNB_id]->rxdataF_comp[(j<<1)+i] = (int *)malloc16(sizeof(int)*(6*12*4)); ue_pbch_vars[eNB_id]->rxdataF_comp[(j<<1)+i] = (int *)malloc16(sizeof(int)*(6*12*4));
ue_pbch_vars[eNB_id]->dl_ch_estimates_ext[(j<<1)+i] = (int *)malloc16(sizeof(int)*6*12*4); ue_pbch_vars[eNB_id]->dl_ch_estimates_ext[(j<<1)+i] = (int *)malloc16(sizeof(int)*6*12*4);
} }
ue_pbch_vars[eNB_id]->llr = (s8 *)malloc16(1920*sizeof(char)); ue_pbch_vars[eNB_id]->llr = (int8_t *)malloc16(1920*sizeof(char));
// ue_pbch_vars[eNB_id]->channel_output = (short *)malloc16(*sizeof(short)); // ue_pbch_vars[eNB_id]->channel_output = (short *)malloc16(*sizeof(short));
...@@ -1271,8 +1271,8 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue, ...@@ -1271,8 +1271,8 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
ue_pbch_vars[eNB_id]->pdu_errors_last=0; ue_pbch_vars[eNB_id]->pdu_errors_last=0;
ue_pbch_vars[eNB_id]->pdu_fer=0; ue_pbch_vars[eNB_id]->pdu_fer=0;
ue_prach_vars[eNB_id]->prachF = (s16 *)malloc16(sizeof(int)*(7*2*sizeof(int)*(frame_parms->ofdm_symbol_size*12))); ue_prach_vars[eNB_id]->prachF = (int16_t *)malloc16(sizeof(int)*(7*2*sizeof(int)*(frame_parms->ofdm_symbol_size*12)));
ue_prach_vars[eNB_id]->prach = (s16 *)malloc16(sizeof(int)*(7*2*sizeof(int)*(frame_parms->ofdm_symbol_size*12))); ue_prach_vars[eNB_id]->prach = (int16_t *)malloc16(sizeof(int)*(7*2*sizeof(int)*(frame_parms->ofdm_symbol_size*12)));
} }
else { else {
ue_pbch_vars[eNB_id] = (LTE_UE_PBCH *)malloc16(sizeof(LTE_UE_PBCH)); ue_pbch_vars[eNB_id] = (LTE_UE_PBCH *)malloc16(sizeof(LTE_UE_PBCH));
...@@ -1397,7 +1397,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue, ...@@ -1397,7 +1397,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB, int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
unsigned char is_secondary_eNB, unsigned char is_secondary_eNB,
u8 cooperation_flag,// 0 for no cooperation,1 for Delay Diversity and 2 for Distributed Alamouti uint8_t cooperation_flag,// 0 for no cooperation,1 for Delay Diversity and 2 for Distributed Alamouti
unsigned char abstraction_flag) unsigned char abstraction_flag)
{ {
...@@ -1676,11 +1676,11 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB, ...@@ -1676,11 +1676,11 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
// ULSCH VARS // ULSCH VARS
eNB_prach_vars->prachF = (s16*)malloc16(1024*4); eNB_prach_vars->prachF = (int16_t*)malloc16(1024*4);
memset(eNB_prach_vars->prachF,0,1024*4); memset(eNB_prach_vars->prachF,0,1024*4);
for (i=0; i<frame_parms->nb_antennas_rx; i++) { for (i=0; i<frame_parms->nb_antennas_rx; i++) {
eNB_prach_vars->rxsigF[i] = (s16*)malloc16(frame_parms->ofdm_symbol_size*12*2*2); eNB_prach_vars->rxsigF[i] = (int16_t*)malloc16(frame_parms->ofdm_symbol_size*12*2*2);
#ifdef DEBUG_PHY #ifdef DEBUG_PHY
msg("[openair][LTE_PHY][INIT] prach_vars->rxsigF[%d] = %p\n",i,eNB_prach_vars->rxsigF[i]); msg("[openair][LTE_PHY][INIT] prach_vars->rxsigF[%d] = %p\n",i,eNB_prach_vars->rxsigF[i]);
#endif #endif
......
#include "defs.h" #include "defs.h"
int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,u8 osf) { int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf) {
u8 log2_osf; uint8_t log2_osf;
if (frame_parms->Ncp==1) { if (frame_parms->Ncp==1) {
frame_parms->nb_prefix_samples0=512; frame_parms->nb_prefix_samples0=512;
......
...@@ -16,16 +16,16 @@ extern int card; ...@@ -16,16 +16,16 @@ extern int card;
#endif #endif
void void
phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, u8 eNB_id) { phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, uint8_t eNB_id) {
u16 rx_power_fil_dB; uint16_t rx_power_fil_dB;
#ifdef EXMIMO #ifdef EXMIMO
#ifdef DRIVER2013 #ifdef DRIVER2013
exmimo_config_t *p_exmimo_config = openair0_exmimo_pci[card].exmimo_config_ptr; exmimo_config_t *p_exmimo_config = openair0_exmimo_pci[card].exmimo_config_ptr;
#endif #endif
#endif #endif
#if defined(EXMIMO) || defined(CBMIMO1) #if defined(EXMIMO) || defined(CBMIMO1)
u16 i; uint16_t i;
#endif #endif
//rx_power_fil_dB = dB_fixed(phy_vars_ue->PHY_measurements.rssi); //rx_power_fil_dB = dB_fixed(phy_vars_ue->PHY_measurements.rssi);
......
...@@ -6,11 +6,11 @@ ...@@ -6,11 +6,11 @@
#ifdef EMOS #ifdef EMOS
#include "SCHED/phy_procedures_emos.h" #include "SCHED/phy_procedures_emos.h"
#endif #endif
*/ */
/** @addtogroup _PHY_PARAMETER_ESTIMATION_BLOCKS_ /** @addtogroup _PHY_PARAMETER_ESTIMATION_BLOCKS_
* @{ * @{
*/ */
/*!\brief Timing drift hysterisis in samples*/ /*!\brief Timing drift hysterisis in samples*/
#define SYNCH_HYST 1 #define SYNCH_HYST 1
...@@ -19,13 +19,13 @@ ...@@ -19,13 +19,13 @@
/*! /*!
\brief This function allocates memory needed for the synchronization. \brief This function allocates memory needed for the synchronization.
\param frame_parms LTE DL frame parameter structure \param frame_parms LTE DL frame parameter structure
*/ */
int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms); //LTE_UE_COMMON *common_vars int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms); //LTE_UE_COMMON *common_vars
/*! \fn void lte_sync_time_free() /*! \fn void lte_sync_time_free()
\brief This function frees the memory allocated by lte_sync_time_init. \brief This function frees the memory allocated by lte_sync_time_init.
*/ */
void lte_sync_time_free(void); void lte_sync_time_free(void);
/*! /*!
...@@ -35,10 +35,10 @@ The algorithm uses a time domain correlation with a downsampled version of the r ...@@ -35,10 +35,10 @@ The algorithm uses a time domain correlation with a downsampled version of the r
\param frame_parms LTE DL frame parameter structure \param frame_parms LTE DL frame parameter structure
\param eNB_id return value with the eNb_id \param eNB_id return value with the eNb_id
\return sync_pos Position of the sync within the frame (downsampled) if successfull and -1 if there was an error or no peak was detected. \return sync_pos Position of the sync within the frame (downsampled) if successfull and -1 if there was an error or no peak was detected.
*/ */
int lte_sync_time(int **rxdata, int lte_sync_time(int **rxdata,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
int *eNB_id); int *eNB_id);
/*! /*!
\brief This function performs detection of the PRACH (=SRS) at the eNb to estimate the timing advance \brief This function performs detection of the PRACH (=SRS) at the eNb to estimate the timing advance
...@@ -49,16 +49,16 @@ The algorithm uses a time domain correlation with a downsampled version of the r ...@@ -49,16 +49,16 @@ The algorithm uses a time domain correlation with a downsampled version of the r
\param peak_val pointer to value of returned peak \param peak_val pointer to value of returned peak
\param sync_corr_eNb pointer to correlation buffer \param sync_corr_eNb pointer to correlation buffer
\return sync_pos Position of the sync within the frame (downsampled) if successfull and -1 if there was an error or no peak was detected. \return sync_pos Position of the sync within the frame (downsampled) if successfull and -1 if there was an error or no peak was detected.
*/ */
int lte_sync_time_eNB(s32 **rxdata, int lte_sync_time_eNB(int32_t **rxdata,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
u32 length, uint32_t length,
u32 *peak_val, uint32_t *peak_val,
u32 *sync_corr_eNb); uint32_t *sync_corr_eNb);
int lte_sync_time_eNB_emul(PHY_VARS_eNB *phy_vars_eNb, int lte_sync_time_eNB_emul(PHY_VARS_eNB *phy_vars_eNb,
u8 sect_id, uint8_t sect_id,
s32 *sync_val); int32_t *sync_val);
/*! /*!
\brief This function performs channel estimation including frequency and temporal interpolation \brief This function performs channel estimation including frequency and temporal interpolation
...@@ -71,26 +71,26 @@ int lte_sync_time_eNB_emul(PHY_VARS_eNB *phy_vars_eNb, ...@@ -71,26 +71,26 @@ int lte_sync_time_eNB_emul(PHY_VARS_eNB *phy_vars_eNb,
\param symbol symbol within frame \param symbol symbol within frame
*/ */
int lte_dl_channel_estimation(PHY_VARS_UE *phy_vars_ue, int lte_dl_channel_estimation(PHY_VARS_UE *phy_vars_ue,
u8 eNB_id, module_id_t eNB_id,
u8 eNB_offset, uint8_t eNB_offset,
u8 Ns, uint8_t Ns,
u8 p, uint8_t p,
u8 l, uint8_t l,
u8 symbol); uint8_t symbol);
int lte_dl_msbfn_channel_estimation(PHY_VARS_UE *phy_vars_ue, int lte_dl_msbfn_channel_estimation(PHY_VARS_UE *phy_vars_ue,
u8 eNB_id, module_id_t eNB_id,
u8 eNB_offset, uint8_t eNB_offset,
int subframe, int subframe,
unsigned char l, unsigned char l,
unsigned char symbol); unsigned char symbol);
int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *phy_vars_ue, int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *phy_vars_ue,
u8 eNB_id, module_id_t eNB_id,
u8 eNB_offset, uint8_t eNB_offset,
int subframe, int subframe,
unsigned char l); unsigned char l);
/* /*
#ifdef EMOS #ifdef EMOS
...@@ -102,7 +102,7 @@ int lte_dl_channel_estimation_emos(int dl_ch_estimates_emos[NB_ANTENNAS_RX*NB_AN ...@@ -102,7 +102,7 @@ int lte_dl_channel_estimation_emos(int dl_ch_estimates_emos[NB_ANTENNAS_RX*NB_AN
unsigned char l, unsigned char l,
unsigned char sector); unsigned char sector);
#endif #endif
*/ */
/*! /*!
\brief Frequency offset estimation for LTE \brief Frequency offset estimation for LTE
...@@ -111,16 +111,16 @@ We estimate the frequency offset by calculating the phase difference between cha ...@@ -111,16 +111,16 @@ We estimate the frequency offset by calculating the phase difference between cha
\param frame_parms pointer to LTE frame parameters \param frame_parms pointer to LTE frame parameters
\param l symbol within slot \param l symbol within slot
\param freq_offset pointer to the returned frequency offset \param freq_offset pointer to the returned frequency offset
*/ */
int lte_est_freq_offset(int **dl_ch_estimates, int lte_est_freq_offset(int **dl_ch_estimates,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
int l, int l,
int* freq_offset); int* freq_offset);
int lte_mbsfn_est_freq_offset(int **dl_ch_estimates, int lte_mbsfn_est_freq_offset(int **dl_ch_estimates,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
int l, int l,
int* freq_offset); int* freq_offset);
/*! \brief Tracking of timing for LTE /*! \brief Tracking of timing for LTE
This function computes the time domain channel response, finds the peak and adjusts the timing in pci_interface.offset accordingly. This function computes the time domain channel response, finds the peak and adjusts the timing in pci_interface.offset accordingly.
...@@ -129,56 +129,56 @@ This function computes the time domain channel response, finds the peak and adju ...@@ -129,56 +129,56 @@ This function computes the time domain channel response, finds the peak and adju
\param eNb_id \param eNb_id
\param clear If clear==1 moving average filter is reset \param clear If clear==1 moving average filter is reset
\param coef Coefficient of the moving average filter (Q1.15) \param coef Coefficient of the moving average filter (Q1.15)
*/ */
void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms, void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
PHY_VARS_UE *phy_vars_ue, PHY_VARS_UE *phy_vars_ue,
unsigned char eNb_id, module_id_t eNb_id,
unsigned char clear, unsigned char clear,
short coef); short coef);
//! \brief this function fills the PHY_VARS_UE->PHY_measurement structure //! \brief this function fills the PHY_VARS_UE->PHY_measurement structure
void lte_ue_measurements(PHY_VARS_UE *phy_vars_ue, void lte_ue_measurements(PHY_VARS_UE *phy_vars_ue,
unsigned int subframe_offset, unsigned int subframe_offset,
unsigned char N0_symbol, unsigned char N0_symbol,
unsigned char abstraction_flag); unsigned char abstraction_flag);
//! \brief This function performance RSRP/RSCP measurements //! \brief This function performance RSRP/RSCP measurements
void ue_rrc_measurements(PHY_VARS_UE *phy_vars_ue, void ue_rrc_measurements(PHY_VARS_UE *phy_vars_ue,
u8 slot, uint8_t slot,
u8 abstraction_flag); uint8_t abstraction_flag);
void lte_ue_measurements_emul(PHY_VARS_UE *phy_vars_ue,u8 last_slot,u8 eNB_id); void lte_ue_measurements_emul(PHY_VARS_UE *phy_vars_ue,uint8_t last_slot,uint8_t eNB_id);
/*! \brief Function to return the path-loss based on the UE cell-specific reference signal strength and transmission power of eNB /*! \brief Function to return the path-loss based on the UE cell-specific reference signal strength and transmission power of eNB
@param Mod_id Module ID for UE @param Mod_id Module ID for UE
@param eNB_index Index of eNB on which to act @param eNB_index Index of eNB on which to act
@returns Path loss in dB @returns Path loss in dB
*/ */
s16 get_PL(u8 Mod_id,u8 eNB_index); int16_t get_PL(module_id_t Mod_id,uint8_t eNB_index);
u8 get_RSRP(u8 Mod_id,u8 eNB_index); uint8_t get_RSRP(module_id_t Mod_id,uint8_t eNB_index);
u8 get_RSRQ(u8 Mod_id,u8 eNB_index); uint8_t get_RSRQ(module_id_t Mod_id,uint8_t eNB_index);
u8 get_n_adj_cells(u8 Mod_id); uint8_t get_n_adj_cells(module_id_t Mod_id);
s8 get_rx_total_gain_dB(u8 Mod_id); int8_t get_rx_total_gain_dB(module_id_t Mod_id);
s8 get_RSSI(u8 Mod_id); int8_t get_RSSI(module_id_t Mod_id);
s8 set_RSRP_filtered(u8 Mod_id,u8 eNB_index,float rsrp); int8_t set_RSRP_filtered(module_id_t Mod_id,uint8_t eNB_index,float rsrp);
s8 set_RSRQ_filtered(u8 Mod_id,u8 eNB_index,float rstq); int8_t set_RSRQ_filtered(module_id_t Mod_id,uint8_t eNB_index,float rstq);
//! Automatic gain control //! Automatic gain control
void phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, void phy_adjust_gain (PHY_VARS_UE *phy_vars_ue,
unsigned char eNB_id); unsigned char eNB_id);
int lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB, int lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB,
u8 eNB_id, module_id_t eNB_id,
u8 UE_id, module_id_t UE_id,
u8 subframe, uint8_t subframe,
u8 l, uint8_t l,
u8 Ns, uint8_t Ns,
u8 cooperation_flag); uint8_t cooperation_flag);
s16 lte_ul_freq_offset_estimation(LTE_DL_FRAME_PARMS *frame_parms, int16_t lte_ul_freq_offset_estimation(LTE_DL_FRAME_PARMS *frame_parms,
s32 *ul_ch_estimates, int32_t *ul_ch_estimates,
u16 nb_rb); uint16_t nb_rb);
int lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms, int lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
LTE_eNB_COMMON *eNb_common_vars, LTE_eNB_COMMON *eNb_common_vars,
...@@ -194,20 +194,20 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -194,20 +194,20 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms,
unsigned char number_of_cards, unsigned char number_of_cards,
short coef); short coef);
int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,u8 UE_id,u8 subframe); int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,module_id_t UE_id,uint8_t subframe);
void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNb, void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNb,
unsigned char eNB_id, module_id_t eNB_id,
unsigned char clear); unsigned char clear);
void lte_eNB_I0_measurements_emul(PHY_VARS_eNB *phy_vars_eNb, void lte_eNB_I0_measurements_emul(PHY_VARS_eNB *phy_vars_eNb,
u8 sect_id); uint8_t sect_id);
void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb, void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb,
unsigned char eNB_id, module_id_t eNB_id,
unsigned char UE_id, module_id_t UE_id,
unsigned char init_averaging); unsigned char init_averaging);
void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms, void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms,
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
#include <xmmintrin.h> #include <xmmintrin.h>
// This is 512/(1:256) in __m128i format // This is 512/(1:256) in __m128i format
s16 inv_ch[256*8] = {512,512,512,512,512,512,512,512, int16_t inv_ch[256*8] = {512,512,512,512,512,512,512,512,
256,256,256,256,256,256,256,256, 256,256,256,256,256,256,256,256,
170,170,170,170,170,170,170,170, 170,170,170,170,170,170,170,170,
128,128,128,128,128,128,128,128, 128,128,128,128,128,128,128,128,
...@@ -263,14 +263,14 @@ s16 inv_ch[256*8] = {512,512,512,512,512,512,512,512, ...@@ -263,14 +263,14 @@ s16 inv_ch[256*8] = {512,512,512,512,512,512,512,512,
}; };
void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms, void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms,
s32 **rxdataF_comp, int32_t **rxdataF_comp,
s32 **ul_ch_mag, int32_t **ul_ch_mag,
s32 **ul_ch_magb, int32_t **ul_ch_magb,
u8 symbol, uint8_t symbol,
u16 Msc_RS, uint16_t Msc_RS,
u8 Qm) { uint8_t Qm) {
u16 re; uint16_t re;
s16 amp; int16_t amp;
__m128i *ul_ch_mag128,*ul_ch_magb128,*rxdataF_comp128; __m128i *ul_ch_mag128,*ul_ch_magb128,*rxdataF_comp128;
rxdataF_comp128 = (__m128i *)&rxdataF_comp[0][symbol*frame_parms->N_RB_DL*12]; rxdataF_comp128 = (__m128i *)&rxdataF_comp[0][symbol*frame_parms->N_RB_DL*12];
...@@ -279,11 +279,11 @@ void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -279,11 +279,11 @@ void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms,
for (re=0;re<(Msc_RS>>2);re++) { for (re=0;re<(Msc_RS>>2);re++) {
amp=(*((s16*)&ul_ch_mag128[re])); amp=(*((int16_t*)&ul_ch_mag128[re]));
if (amp>255) if (amp>255)
amp=255; amp=255;
// printf("freq_eq: symbol %d re %d => %d,%d,%d, (%d) (%d,%d) => ",symbol,re,*((s16*)(&ul_ch_mag128[re])),amp,inv_ch[8*amp],*((s16*)(&ul_ch_mag128[re]))*inv_ch[8*amp],*(s16*)&(rxdataF_comp128[re]),*(1+(s16*)&(rxdataF_comp128[re]))); // printf("freq_eq: symbol %d re %d => %d,%d,%d, (%d) (%d,%d) => ",symbol,re,*((int16_t*)(&ul_ch_mag128[re])),amp,inv_ch[8*amp],*((int16_t*)(&ul_ch_mag128[re]))*inv_ch[8*amp],*(int16_t*)&(rxdataF_comp128[re]),*(1+(int16_t*)&(rxdataF_comp128[re])));
rxdataF_comp128[re] = _mm_mullo_epi16(rxdataF_comp128[re],*((__m128i *)&inv_ch[8*amp])); rxdataF_comp128[re] = _mm_mullo_epi16(rxdataF_comp128[re],*((__m128i *)&inv_ch[8*amp]));
if (Qm==4) if (Qm==4)
ul_ch_mag128[re] = _mm_set1_epi16(324); // this is 512*2/sqrt(10) ul_ch_mag128[re] = _mm_set1_epi16(324); // this is 512*2/sqrt(10)
...@@ -291,7 +291,7 @@ void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -291,7 +291,7 @@ void freq_equalization(LTE_DL_FRAME_PARMS *frame_parms,
ul_ch_mag128[re] = _mm_set1_epi16(316); // this is 512*4/sqrt(42) ul_ch_mag128[re] = _mm_set1_epi16(316); // this is 512*4/sqrt(42)
ul_ch_magb128[re] = _mm_set1_epi16(158); // this is 512*2/sqrt(42) ul_ch_magb128[re] = _mm_set1_epi16(158); // this is 512*2/sqrt(42)
} }
// printf("(%d,%d)\n",*(s16*)&(rxdataF_comp128[re]),*(1+(s16*)&(rxdataF_comp128[re]))); // printf("(%d,%d)\n",*(int16_t*)&(rxdataF_comp128[re]),*(1+(int16_t*)&(rxdataF_comp128[re])));
} }
} }
...@@ -40,8 +40,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -40,8 +40,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
for (i = 0; i < frame_parms->nb_prefix_samples; i++) { for (i = 0; i < frame_parms->nb_prefix_samples; i++) {
temp = 0; temp = 0;
for (aa=0;aa<frame_parms->nb_antennas_rx;aa++) { for (aa=0;aa<frame_parms->nb_antennas_rx;aa++) {
Re = ((s16*)phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_id][aa])[(i<<2)]; Re = ((int16_t*)phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_id][aa])[(i<<2)];
Im = ((s16*)phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_id][aa])[1+(i<<2)]; Im = ((int16_t*)phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_id][aa])[1+(i<<2)];
temp += (Re*Re/2) + (Im*Im/2); temp += (Re*Re/2) + (Im*Im/2);
} }
if (temp > max_val) { if (temp > max_val) {
...@@ -135,8 +135,8 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -135,8 +135,8 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms,
for (i = 0; i < frame_parms->ofdm_symbol_size/2; i++) { for (i = 0; i < frame_parms->ofdm_symbol_size/2; i++) {
temp = 0; temp = 0;
for (aa=0;aa<frame_parms->nb_antennas_rx;aa++) { for (aa=0;aa<frame_parms->nb_antennas_rx;aa++) {
Re = ((s16*)lte_eNb_srs->srs_ch_estimates_time[ind][aa])[(i<<2)]; Re = ((int16_t*)lte_eNb_srs->srs_ch_estimates_time[ind][aa])[(i<<2)];
Im = ((s16*)lte_eNb_srs->srs_ch_estimates_time[ind][aa])[1+(i<<2)]; Im = ((int16_t*)lte_eNb_srs->srs_ch_estimates_time[ind][aa])[1+(i<<2)];
temp += (Re*Re/2) + (Im*Im/2); temp += (Re*Re/2) + (Im*Im/2);
} }
if (temp > max_val) { if (temp > max_val) {
...@@ -161,7 +161,7 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -161,7 +161,7 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms,
} }
int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,u8 UE_id,u8 subframe) int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,uint8_t UE_id,uint8_t subframe)
{ {
static int first_run=1; static int first_run=1;
static int max_pos_fil2=0; static int max_pos_fil2=0;
...@@ -171,11 +171,11 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,u8 UE_id,u8 subframe ...@@ -171,11 +171,11 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,u8 UE_id,u8 subframe
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms;
LTE_eNB_PUSCH *eNB_pusch_vars = phy_vars_eNB->lte_eNB_pusch_vars[UE_id]; LTE_eNB_PUSCH *eNB_pusch_vars = phy_vars_eNB->lte_eNB_pusch_vars[UE_id];
s32 **ul_ch_estimates_time= eNB_pusch_vars->drs_ch_estimates_time[0]; int32_t **ul_ch_estimates_time= eNB_pusch_vars->drs_ch_estimates_time[0];
u8 harq_pid = subframe2harq_pid(frame_parms,((subframe==9)?-1:0)+phy_vars_eNB->frame,subframe); uint8_t harq_pid = subframe2harq_pid(frame_parms,((subframe==9)?-1:0)+phy_vars_eNB->frame,subframe);
u8 Ns = 1; //we take the estimate from the second slot uint8_t Ns = 1; //we take the estimate from the second slot
u8 cyclic_shift = (frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift + uint8_t cyclic_shift = (frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift +
phy_vars_eNB->ulsch_eNB[UE_id]->harq_processes[harq_pid]->n_DMRS2 + phy_vars_eNB->ulsch_eNB[UE_id]->harq_processes[harq_pid]->n_DMRS2 +
frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[(subframe<<1)+Ns]) % 12; frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[(subframe<<1)+Ns]) % 12;
...@@ -186,8 +186,8 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,u8 UE_id,u8 subframe ...@@ -186,8 +186,8 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,u8 UE_id,u8 subframe
for (i = 0; i < frame_parms->ofdm_symbol_size; i++) { for (i = 0; i < frame_parms->ofdm_symbol_size; i++) {
temp = 0; temp = 0;
for (aa=0;aa<frame_parms->nb_antennas_rx;aa++) { for (aa=0;aa<frame_parms->nb_antennas_rx;aa++) {
Re = ((s16*)ul_ch_estimates_time[aa])[(i<<2)]; Re = ((int16_t*)ul_ch_estimates_time[aa])[(i<<2)];
Im = ((s16*)ul_ch_estimates_time[aa])[1+(i<<2)]; Im = ((int16_t*)ul_ch_estimates_time[aa])[1+(i<<2)];
temp += (Re*Re/2) + (Im*Im/2); temp += (Re*Re/2) + (Im*Im/2);
} }
if (temp > max_val) { if (temp > max_val) {
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
//#define DEBUG_CH //#define DEBUG_CH
int lte_dl_channel_estimation(PHY_VARS_UE *phy_vars_ue, int lte_dl_channel_estimation(PHY_VARS_UE *phy_vars_ue,
u8 eNB_id, uint8_t eNB_id,
u8 eNB_offset, uint8_t eNB_offset,
unsigned char Ns, unsigned char Ns,
unsigned char p, unsigned char p,
unsigned char l, unsigned char l,
...@@ -25,9 +25,9 @@ int lte_dl_channel_estimation(PHY_VARS_UE *phy_vars_ue, ...@@ -25,9 +25,9 @@ int lte_dl_channel_estimation(PHY_VARS_UE *phy_vars_ue,
// unsigned int n; // unsigned int n;
// int i; // int i;
u16 Nid_cell = (eNB_offset == 0) ? phy_vars_ue->lte_frame_parms.Nid_cell : phy_vars_ue->PHY_measurements.adj_cell_id[eNB_offset-1]; uint16_t Nid_cell = (eNB_offset == 0) ? phy_vars_ue->lte_frame_parms.Nid_cell : phy_vars_ue->PHY_measurements.adj_cell_id[eNB_offset-1];
u8 nushift,pilot1,pilot2,pilot3; uint8_t nushift,pilot1,pilot2,pilot3;
int **dl_ch_estimates=phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset]; int **dl_ch_estimates=phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset];
int **rxdataF=phy_vars_ue->lte_ue_common_vars.rxdataF; int **rxdataF=phy_vars_ue->lte_ue_common_vars.rxdataF;
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
//#define DEBUG_CH //#define DEBUG_CH
int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *phy_vars_ue, int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *phy_vars_ue,
u8 eNB_id, uint8_t eNB_id,
u8 eNB_offset, uint8_t eNB_offset,
int subframe, int subframe,
unsigned char l) { unsigned char l) {
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#define k1 1024 #define k1 1024
#define k2 (1024-k1) #define k2 (1024-k1)
s32 rx_power_avg_eNB[3][3]; int32_t rx_power_avg_eNB[3][3];
void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNb, void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNb,
...@@ -25,10 +25,10 @@ void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNb, ...@@ -25,10 +25,10 @@ void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNb,
PHY_MEASUREMENTS_eNB *phy_measurements = &phy_vars_eNb->PHY_measurements_eNB[eNB_id]; PHY_MEASUREMENTS_eNB *phy_measurements = &phy_vars_eNb->PHY_measurements_eNB[eNB_id];
u32 aarx,rx_power_correction; uint32_t aarx,rx_power_correction;
u32 rb; uint32_t rb;
s32 *ul_ch; int32_t *ul_ch;
s32 n0_power_tot; int32_t n0_power_tot;
// noise measurements // noise measurements
// for the moment we measure the noise on the 7th OFDM symbol (in S subframe) // for the moment we measure the noise on the 7th OFDM symbol (in S subframe)
...@@ -124,10 +124,10 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb, ...@@ -124,10 +124,10 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb,
PHY_MEASUREMENTS_eNB *phy_measurements = &phy_vars_eNb->PHY_measurements_eNB[eNB_id]; PHY_MEASUREMENTS_eNB *phy_measurements = &phy_vars_eNb->PHY_measurements_eNB[eNB_id];
LTE_eNB_SRS *eNB_srs_vars = &phy_vars_eNb->lte_eNB_srs_vars[UE_id]; LTE_eNB_SRS *eNB_srs_vars = &phy_vars_eNb->lte_eNB_srs_vars[UE_id];
s32 aarx,rx_power_correction; int32_t aarx,rx_power_correction;
s32 rx_power; int32_t rx_power;
u32 rb; uint32_t rb;
s32 *ul_ch; int32_t *ul_ch;
//printf("Running eNB_srs_measurements for eNB_id %d\n",eNB_id); //printf("Running eNB_srs_measurements for eNB_id %d\n",eNB_id);
...@@ -179,7 +179,7 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb, ...@@ -179,7 +179,7 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb,
phy_measurements->wideband_cqi_tot[UE_id] = dB_fixed2(rx_power,2*phy_measurements->n0_power_tot); phy_measurements->wideband_cqi_tot[UE_id] = dB_fixed2(rx_power,2*phy_measurements->n0_power_tot);
// times 2 since we have noise only in the odd carriers of the srs comb // times 2 since we have noise only in the odd carriers of the srs comb
phy_measurements->rx_rssi_dBm[UE_id] = (s32)dB_fixed(rx_power_avg_eNB[UE_id][eNB_id])-phy_vars_eNb->rx_total_gain_eNB_dB; phy_measurements->rx_rssi_dBm[UE_id] = (int32_t)dB_fixed(rx_power_avg_eNB[UE_id][eNB_id])-phy_vars_eNb->rx_total_gain_eNB_dB;
...@@ -229,7 +229,7 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb, ...@@ -229,7 +229,7 @@ void lte_eNB_srs_measurements(PHY_VARS_eNB *phy_vars_eNb,
} }
void lte_eNB_I0_measurements_emul(PHY_VARS_eNB *phy_vars_eNb, void lte_eNB_I0_measurements_emul(PHY_VARS_eNB *phy_vars_eNb,
u8 sect_id) { uint8_t sect_id) {
LOG_D(PHY,"EMUL lte_eNB_IO_measurements_emul: eNB %d, sect %d\n",phy_vars_eNb->Mod_id,sect_id); LOG_D(PHY,"EMUL lte_eNB_IO_measurements_emul: eNB %d, sect %d\n",phy_vars_eNb->Mod_id,sect_id);
} }
......
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
__m128i avg128F; __m128i avg128F;
//compute average channel_level on each (TX,RX) antenna pair //compute average channel_level on each (TX,RX) antenna pair
int dl_channel_level(s16 *dl_ch, int dl_channel_level(int16_t *dl_ch,
LTE_DL_FRAME_PARMS *frame_parms) { LTE_DL_FRAME_PARMS *frame_parms) {
s16 rb; int16_t rb;
__m128i *dl_ch128; __m128i *dl_ch128;
int avg; int avg;
...@@ -54,7 +54,7 @@ int lte_est_freq_offset(int **dl_ch_estimates, ...@@ -54,7 +54,7 @@ int lte_est_freq_offset(int **dl_ch_estimates,
double phase_offset; double phase_offset;
int freq_offset_est; int freq_offset_est;
unsigned char aa; unsigned char aa;
s16 *dl_ch,*dl_ch_prev; int16_t *dl_ch,*dl_ch_prev;
static int first_run = 1; static int first_run = 1;
int coef = 1<<10; int coef = 1<<10;
int ncoef = 32767 - coef; int ncoef = 32767 - coef;
...@@ -72,15 +72,15 @@ int lte_est_freq_offset(int **dl_ch_estimates, ...@@ -72,15 +72,15 @@ int lte_est_freq_offset(int **dl_ch_estimates,
// for (aa=0;aa<frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx;aa++) { // for (aa=0;aa<frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx;aa++) {
for (aa=0;aa<1;aa++) { for (aa=0;aa<1;aa++) {
dl_ch = (s16 *)&dl_ch_estimates[aa][12+ch_offset]; dl_ch = (int16_t *)&dl_ch_estimates[aa][12+ch_offset];
dl_ch_shift = 4+(log2_approx(dl_channel_level(dl_ch,frame_parms))/2); dl_ch_shift = 4+(log2_approx(dl_channel_level(dl_ch,frame_parms))/2);
// printf("dl_ch_shift: %d\n",dl_ch_shift); // printf("dl_ch_shift: %d\n",dl_ch_shift);
if (ch_offset == 0) if (ch_offset == 0)
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][12+(4-frame_parms->Ncp)*(frame_parms->ofdm_symbol_size)]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][12+(4-frame_parms->Ncp)*(frame_parms->ofdm_symbol_size)];
else else
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][12+0]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][12+0];
// calculate omega = angle(conj(dl_ch)*dl_ch_prev)) // calculate omega = angle(conj(dl_ch)*dl_ch_prev))
...@@ -91,11 +91,11 @@ int lte_est_freq_offset(int **dl_ch_estimates, ...@@ -91,11 +91,11 @@ int lte_est_freq_offset(int **dl_ch_estimates,
// printf("omega (%d,%d)\n",omega_cpx->r,omega_cpx->i); // printf("omega (%d,%d)\n",omega_cpx->r,omega_cpx->i);
dl_ch = (s16 *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12) + ch_offset]; dl_ch = (int16_t *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12) + ch_offset];
if (ch_offset == 0) if (ch_offset == 0)
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12)+(4-frame_parms->Ncp)*(frame_parms->ofdm_symbol_size)]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12)+(4-frame_parms->Ncp)*(frame_parms->ofdm_symbol_size)];
else else
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][((frame_parms->N_RB_DL/2) + 1)*12]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][((frame_parms->N_RB_DL/2) + 1)*12];
// calculate omega = angle(conj(dl_ch)*dl_ch_prev)) // calculate omega = angle(conj(dl_ch)*dl_ch_prev))
omega = dot_product(dl_ch,dl_ch_prev,((frame_parms->N_RB_DL/2) - 1)*12,dl_ch_shift); omega = dot_product(dl_ch,dl_ch_prev,((frame_parms->N_RB_DL/2) - 1)*12,dl_ch_shift);
...@@ -141,7 +141,7 @@ int lte_mbsfn_est_freq_offset(int **dl_ch_estimates, ...@@ -141,7 +141,7 @@ int lte_mbsfn_est_freq_offset(int **dl_ch_estimates,
double phase_offset; double phase_offset;
int freq_offset_est; int freq_offset_est;
unsigned char aa; unsigned char aa;
s16 *dl_ch,*dl_ch_prev; int16_t *dl_ch,*dl_ch_prev;
static int first_run = 1; static int first_run = 1;
int coef = 1<<10; int coef = 1<<10;
int ncoef = 32767 - coef; int ncoef = 32767 - coef;
...@@ -159,18 +159,18 @@ int lte_mbsfn_est_freq_offset(int **dl_ch_estimates, ...@@ -159,18 +159,18 @@ int lte_mbsfn_est_freq_offset(int **dl_ch_estimates,
// for (aa=0;aa<frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx;aa++) { // for (aa=0;aa<frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx;aa++) {
for (aa=0;aa<1;aa++) { for (aa=0;aa<1;aa++) {
dl_ch = (s16 *)&dl_ch_estimates[aa][12+ch_offset]; dl_ch = (int16_t *)&dl_ch_estimates[aa][12+ch_offset];
dl_ch_shift = 4+(log2_approx(dl_channel_level(dl_ch,frame_parms))/2); dl_ch_shift = 4+(log2_approx(dl_channel_level(dl_ch,frame_parms))/2);
// printf("dl_ch_shift: %d\n",dl_ch_shift); // printf("dl_ch_shift: %d\n",dl_ch_shift);
if (ch_offset == 0) if (ch_offset == 0)
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][12+(10*(frame_parms->ofdm_symbol_size))]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][12+(10*(frame_parms->ofdm_symbol_size))];
else else
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][12+6]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][12+6];
//else if //else if
// dl_ch_prev = (s16 *)&dl_ch_estimates[aa][12+0]; // dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][12+0];
// calculate omega = angle(conj(dl_ch)*dl_ch_prev)) // calculate omega = angle(conj(dl_ch)*dl_ch_prev))
// printf("Computing freq_offset\n"); // printf("Computing freq_offset\n");
...@@ -180,11 +180,11 @@ int lte_mbsfn_est_freq_offset(int **dl_ch_estimates, ...@@ -180,11 +180,11 @@ int lte_mbsfn_est_freq_offset(int **dl_ch_estimates,
// printf("omega (%d,%d)\n",omega_cpx->r,omega_cpx->i); // printf("omega (%d,%d)\n",omega_cpx->r,omega_cpx->i);
dl_ch = (s16 *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12) + ch_offset]; dl_ch = (int16_t *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12) + ch_offset];
if (ch_offset == 0) if (ch_offset == 0)
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12)+10*(frame_parms->ofdm_symbol_size)]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][(((frame_parms->N_RB_DL/2) + 1)*12)+10*(frame_parms->ofdm_symbol_size)];
else else
dl_ch_prev = (s16 *)&dl_ch_estimates[aa][((frame_parms->N_RB_DL/2) + 1)*12+6]; dl_ch_prev = (int16_t *)&dl_ch_estimates[aa][((frame_parms->N_RB_DL/2) + 1)*12+6];
// calculate omega = angle(conj(dl_ch)*dl_ch_prev)) // calculate omega = angle(conj(dl_ch)*dl_ch_prev))
omega = dot_product(dl_ch,dl_ch_prev,((frame_parms->N_RB_DL/2) - 1)*12,dl_ch_shift); omega = dot_product(dl_ch,dl_ch_prev,((frame_parms->N_RB_DL/2) - 1)*12,dl_ch_shift);
......
...@@ -73,10 +73,10 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com ...@@ -73,10 +73,10 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com
} }
// primary_synch0_time = (int *)malloc16((frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int)); // primary_synch0_time = (int *)malloc16((frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int));
primary_synch0_time = (s16 *)malloc16((frame_parms->ofdm_symbol_size)*sizeof(s16)*2); primary_synch0_time = (int16_t *)malloc16((frame_parms->ofdm_symbol_size)*sizeof(int16_t)*2);
if (primary_synch0_time) { if (primary_synch0_time) {
// bzero(primary_synch0_time,(frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int)); // bzero(primary_synch0_time,(frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int));
bzero(primary_synch0_time,(frame_parms->ofdm_symbol_size)*sizeof(s16)*2); bzero(primary_synch0_time,(frame_parms->ofdm_symbol_size)*sizeof(int16_t)*2);
#ifdef DEBUG_PHY #ifdef DEBUG_PHY
msg("[openair][LTE_PHY][SYNC] primary_synch0_time allocated at %p\n", primary_synch0_time); msg("[openair][LTE_PHY][SYNC] primary_synch0_time allocated at %p\n", primary_synch0_time);
#endif #endif
...@@ -87,10 +87,10 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com ...@@ -87,10 +87,10 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com
} }
// primary_synch1_time = (int *)malloc16((frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int)); // primary_synch1_time = (int *)malloc16((frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int));
primary_synch1_time = (s16 *)malloc16((frame_parms->ofdm_symbol_size)*sizeof(s16)*2); primary_synch1_time = (int16_t *)malloc16((frame_parms->ofdm_symbol_size)*sizeof(int16_t)*2);
if (primary_synch1_time) { if (primary_synch1_time) {
// bzero(primary_synch1_time,(frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int)); // bzero(primary_synch1_time,(frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int));
bzero(primary_synch1_time,(frame_parms->ofdm_symbol_size)*sizeof(s16)*2); bzero(primary_synch1_time,(frame_parms->ofdm_symbol_size)*sizeof(int16_t)*2);
#ifdef DEBUG_PHY #ifdef DEBUG_PHY
msg("[openair][LTE_PHY][SYNC] primary_synch1_time allocated at %p\n", primary_synch1_time); msg("[openair][LTE_PHY][SYNC] primary_synch1_time allocated at %p\n", primary_synch1_time);
#endif #endif
...@@ -101,10 +101,10 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com ...@@ -101,10 +101,10 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com
} }
// primary_synch2_time = (int *)malloc16((frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int)); // primary_synch2_time = (int *)malloc16((frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int));
primary_synch2_time = (s16 *)malloc16((frame_parms->ofdm_symbol_size)*sizeof(s16)*2); primary_synch2_time = (int16_t *)malloc16((frame_parms->ofdm_symbol_size)*sizeof(int16_t)*2);
if (primary_synch2_time) { if (primary_synch2_time) {
// bzero(primary_synch2_time,(frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int)); // bzero(primary_synch2_time,(frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples)*sizeof(int));
bzero(primary_synch2_time,(frame_parms->ofdm_symbol_size)*sizeof(s16)*2); bzero(primary_synch2_time,(frame_parms->ofdm_symbol_size)*sizeof(int16_t)*2);
#ifdef DEBUG_PHY #ifdef DEBUG_PHY
msg("[openair][LTE_PHY][SYNC] primary_synch2_time allocated at %p\n", primary_synch2_time); msg("[openair][LTE_PHY][SYNC] primary_synch2_time allocated at %p\n", primary_synch2_time);
#endif #endif
...@@ -137,7 +137,7 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com ...@@ -137,7 +137,7 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com
for (i=0; i<frame_parms->ofdm_symbol_size; i++) for (i=0; i<frame_parms->ofdm_symbol_size; i++)
((s32*)primary_synch0_time)[i] = sync_tmp[2*i]; ((int32_t*)primary_synch0_time)[i] = sync_tmp[2*i];
k=frame_parms->ofdm_symbol_size-36; k=frame_parms->ofdm_symbol_size-36;
for (i=0; i<72; i++) { for (i=0; i<72; i++) {
...@@ -159,7 +159,7 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com ...@@ -159,7 +159,7 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com
0) ; /// 0 - input is in complex Q1.15 format, 1 - input is in complex redundant Q1.15 format) 0) ; /// 0 - input is in complex Q1.15 format, 1 - input is in complex redundant Q1.15 format)
for (i=0; i<frame_parms->ofdm_symbol_size; i++) for (i=0; i<frame_parms->ofdm_symbol_size; i++)
((s32*)primary_synch1_time)[i] = sync_tmp[2*i]; ((int32_t*)primary_synch1_time)[i] = sync_tmp[2*i];
k=frame_parms->ofdm_symbol_size-36; k=frame_parms->ofdm_symbol_size-36;
for (i=0; i<72; i++) { for (i=0; i<72; i++) {
...@@ -181,7 +181,7 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com ...@@ -181,7 +181,7 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms ) { // LTE_UE_COMMON *com
0); /// 0 - input is in complex Q1.15 format, 1 - input is in complex redundant Q1.15 format) 0); /// 0 - input is in complex Q1.15 format, 1 - input is in complex redundant Q1.15 format)
for (i=0; i<frame_parms->ofdm_symbol_size; i++) for (i=0; i<frame_parms->ofdm_symbol_size; i++)
((s32*)primary_synch2_time)[i] = sync_tmp[2*i]; ((int32_t*)primary_synch2_time)[i] = sync_tmp[2*i];
...@@ -354,7 +354,7 @@ int lte_sync_time(int **rxdata, ///rx data in time domain ...@@ -354,7 +354,7 @@ int lte_sync_time(int **rxdata, ///rx data in time domain
sync_source = s; sync_source = s;
/* /*
printf("s %d: n %d sync_out %d, sync_out2 %d (sync_corr %d,%d), (%d,%d) (%d,%d)\n",s,n,abs32(sync_out[s]),abs32(sync_out2[s]),sync_corr_ue0[n], printf("s %d: n %d sync_out %d, sync_out2 %d (sync_corr %d,%d), (%d,%d) (%d,%d)\n",s,n,abs32(sync_out[s]),abs32(sync_out2[s]),sync_corr_ue0[n],
sync_corr_ue0[n+length],((s16*)&sync_out[s])[0],((s16*)&sync_out[s])[1],((s16*)&sync_out2[s])[0],((s16*)&sync_out2[s])[1]); sync_corr_ue0[n+length],((int16_t*)&sync_out[s])[0],((int16_t*)&sync_out[s])[1],((int16_t*)&sync_out2[s])[0],((int16_t*)&sync_out2[s])[1]);
*/ */
} }
} }
...@@ -381,11 +381,11 @@ int lte_sync_time(int **rxdata, ///rx data in time domain ...@@ -381,11 +381,11 @@ int lte_sync_time(int **rxdata, ///rx data in time domain
//#define DEBUG_PHY //#define DEBUG_PHY
int lte_sync_time_eNB(s32 **rxdata, ///rx data in time domain int lte_sync_time_eNB(int32_t **rxdata, ///rx data in time domain
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
u32 length, uint32_t length,
u32 *peak_val_out, uint32_t *peak_val_out,
u32 *sync_corr_eNB) { uint32_t *sync_corr_eNB) {
// perform a time domain correlation using the oversampled sync sequence // perform a time domain correlation using the oversampled sync sequence
...@@ -476,10 +476,10 @@ int lte_sync_time_eNB(s32 **rxdata, ///rx data in time domain ...@@ -476,10 +476,10 @@ int lte_sync_time_eNB(s32 **rxdata, ///rx data in time domain
//extern channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX]; //extern channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX];
int lte_sync_time_eNB_emul(PHY_VARS_eNB *phy_vars_eNB, int lte_sync_time_eNB_emul(PHY_VARS_eNB *phy_vars_eNB,
u8 sect_id, uint8_t sect_id,
s32 *sync_val) { int32_t *sync_val) {
u8 UE_id; uint8_t UE_id;
msg("[PHY] EMUL lte_sync_time_eNB_emul eNB %d, sect_id %d\n",phy_vars_eNB->Mod_id,sect_id); msg("[PHY] EMUL lte_sync_time_eNB_emul eNB %d, sect_id %d\n",phy_vars_eNB->Mod_id,sect_id);
*sync_val = 0; *sync_val = 0;
......
...@@ -50,7 +50,7 @@ __m128i mmtmpPMI1 __attribute__ ((aligned(16))); ...@@ -50,7 +50,7 @@ __m128i mmtmpPMI1 __attribute__ ((aligned(16)));
__m128i mmtmpPMI2 __attribute__ ((aligned(16))); __m128i mmtmpPMI2 __attribute__ ((aligned(16)));
__m128i mmtmpPMI3 __attribute__ ((aligned(16))); __m128i mmtmpPMI3 __attribute__ ((aligned(16)));
s16 get_PL(u8 Mod_id,u8 eNB_index) { int16_t get_PL(uint8_t Mod_id,uint8_t eNB_index) {
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
int RSoffset; int RSoffset;
...@@ -64,12 +64,12 @@ s16 get_PL(u8 Mod_id,u8 eNB_index) { ...@@ -64,12 +64,12 @@ s16 get_PL(u8 Mod_id,u8 eNB_index) {
else else
RSoffset = 3; RSoffset = 3;
return((s16)(phy_vars_ue->rx_total_gain_dB-dB_fixed(phy_vars_ue->PHY_measurements.rssi/RSoffset) + return((int16_t)(phy_vars_ue->rx_total_gain_dB-dB_fixed(phy_vars_ue->PHY_measurements.rssi/RSoffset) +
phy_vars_ue->lte_frame_parms.pdsch_config_common.referenceSignalPower)); phy_vars_ue->lte_frame_parms.pdsch_config_common.referenceSignalPower));
} }
u8 get_n_adj_cells (u8 Mod_id){ uint8_t get_n_adj_cells (uint8_t Mod_id){
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
if (phy_vars_ue) if (phy_vars_ue)
...@@ -78,7 +78,7 @@ u8 get_n_adj_cells (u8 Mod_id){ ...@@ -78,7 +78,7 @@ u8 get_n_adj_cells (u8 Mod_id){
return 0; return 0;
} }
s8 get_rx_total_gain_dB (u8 Mod_id){ int8_t get_rx_total_gain_dB (uint8_t Mod_id){
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
if (phy_vars_ue) if (phy_vars_ue)
...@@ -86,7 +86,7 @@ s8 get_rx_total_gain_dB (u8 Mod_id){ ...@@ -86,7 +86,7 @@ s8 get_rx_total_gain_dB (u8 Mod_id){
else else
return -1; return -1;
} }
s8 get_RSSI (u8 Mod_id){ int8_t get_RSSI (uint8_t Mod_id){
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
if (phy_vars_ue) if (phy_vars_ue)
...@@ -94,7 +94,7 @@ s8 get_RSSI (u8 Mod_id){ ...@@ -94,7 +94,7 @@ s8 get_RSSI (u8 Mod_id){
else else
return -1; return -1;
} }
u8 get_RSRP(u8 Mod_id,u8 eNB_index) { uint8_t get_RSRP(uint8_t Mod_id,uint8_t eNB_index) {
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
if (phy_vars_ue) if (phy_vars_ue)
...@@ -102,7 +102,7 @@ u8 get_RSRP(u8 Mod_id,u8 eNB_index) { ...@@ -102,7 +102,7 @@ u8 get_RSRP(u8 Mod_id,u8 eNB_index) {
return 0; return 0;
} }
u8 get_RSRQ(u8 Mod_id,u8 eNB_index) { uint8_t get_RSRQ(uint8_t Mod_id,uint8_t eNB_index) {
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
if (phy_vars_ue) if (phy_vars_ue)
...@@ -110,7 +110,7 @@ u8 get_RSRQ(u8 Mod_id,u8 eNB_index) { ...@@ -110,7 +110,7 @@ u8 get_RSRQ(u8 Mod_id,u8 eNB_index) {
return 0; return 0;
} }
s8 set_RSRP_filtered(u8 Mod_id,u8 eNB_index,float rsrp) { int8_t set_RSRP_filtered(uint8_t Mod_id,uint8_t eNB_index,float rsrp) {
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
if (phy_vars_ue){ if (phy_vars_ue){
...@@ -121,7 +121,7 @@ s8 set_RSRP_filtered(u8 Mod_id,u8 eNB_index,float rsrp) { ...@@ -121,7 +121,7 @@ s8 set_RSRP_filtered(u8 Mod_id,u8 eNB_index,float rsrp) {
return -1; return -1;
} }
s8 set_RSRQ_filtered(u8 Mod_id,u8 eNB_index,float rsrq) { int8_t set_RSRQ_filtered(uint8_t Mod_id,uint8_t eNB_index,float rsrq) {
PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id]; PHY_VARS_UE *phy_vars_ue = PHY_vars_UE_g[Mod_id];
if (phy_vars_ue){ if (phy_vars_ue){
...@@ -134,16 +134,16 @@ s8 set_RSRQ_filtered(u8 Mod_id,u8 eNB_index,float rsrq) { ...@@ -134,16 +134,16 @@ s8 set_RSRQ_filtered(u8 Mod_id,u8 eNB_index,float rsrq) {
} }
void ue_rrc_measurements(PHY_VARS_UE *phy_vars_ue, void ue_rrc_measurements(PHY_VARS_UE *phy_vars_ue,
u8 slot, uint8_t slot,
u8 abstraction_flag) { uint8_t abstraction_flag) {
int aarx,rb; int aarx,rb;
s16 *rxF; int16_t *rxF;
u16 Nid_cell = phy_vars_ue->lte_frame_parms.Nid_cell; uint16_t Nid_cell = phy_vars_ue->lte_frame_parms.Nid_cell;
u8 eNB_offset,nu,l,nushift,k; uint8_t eNB_offset,nu,l,nushift,k;
u16 off; uint16_t off;
s16 rx_power_correction; int16_t rx_power_correction;
// if the fft size an odd power of 2, the output of the fft is shifted one too much, so we need to compensate for that // if the fft size an odd power of 2, the output of the fft is shifted one too much, so we need to compensate for that
...@@ -194,10 +194,10 @@ void ue_rrc_measurements(PHY_VARS_UE *phy_vars_ue, ...@@ -194,10 +194,10 @@ void ue_rrc_measurements(PHY_VARS_UE *phy_vars_ue,
#endif #endif
for (aarx=0;aarx<phy_vars_ue->lte_frame_parms.nb_antennas_rx;aarx++) { for (aarx=0;aarx<phy_vars_ue->lte_frame_parms.nb_antennas_rx;aarx++) {
#ifndef NEW_FFT #ifndef NEW_FFT
rxF = (s16 *)&phy_vars_ue->lte_ue_common_vars.rxdataF[aarx][(l*phy_vars_ue->lte_frame_parms.ofdm_symbol_size)<<1]; rxF = (int16_t *)&phy_vars_ue->lte_ue_common_vars.rxdataF[aarx][(l*phy_vars_ue->lte_frame_parms.ofdm_symbol_size)<<1];
off = (phy_vars_ue->lte_frame_parms.first_carrier_offset+k)<<2; off = (phy_vars_ue->lte_frame_parms.first_carrier_offset+k)<<2;
#else #else
rxF = (s16 *)&phy_vars_ue->lte_ue_common_vars.rxdataF[aarx][(l*phy_vars_ue->lte_frame_parms.ofdm_symbol_size)]; rxF = (int16_t *)&phy_vars_ue->lte_ue_common_vars.rxdataF[aarx][(l*phy_vars_ue->lte_frame_parms.ofdm_symbol_size)];
off = (phy_vars_ue->lte_frame_parms.first_carrier_offset+k)<<1; off = (phy_vars_ue->lte_frame_parms.first_carrier_offset+k)<<1;
#endif #endif
...@@ -623,7 +623,7 @@ void lte_ue_measurements(PHY_VARS_UE *phy_vars_ue, ...@@ -623,7 +623,7 @@ void lte_ue_measurements(PHY_VARS_UE *phy_vars_ue,
} }
void lte_ue_measurements_emul(PHY_VARS_UE *phy_vars_ue,u8 last_slot,u8 eNB_id) { void lte_ue_measurements_emul(PHY_VARS_UE *phy_vars_ue,uint8_t last_slot,uint8_t eNB_id) {
msg("[PHY] EMUL UE lte_ue_measurements_emul last slot %d, eNB_id %d\n",last_slot,eNB_id); msg("[PHY] EMUL UE lte_ue_measurements_emul last slot %d, eNB_id %d\n",last_slot,eNB_id);
} }
......
...@@ -22,9 +22,9 @@ unsigned int lte_gold_generic(unsigned int *x1, unsigned int *x2, unsigned char ...@@ -22,9 +22,9 @@ unsigned int lte_gold_generic(unsigned int *x1, unsigned int *x2, unsigned char
@param lte_gold_table pointer to table where sequences are stored @param lte_gold_table pointer to table where sequences are stored
@param Nid_cell Cell Id (to compute sequences for local and adjacent cells) */ @param Nid_cell Cell Id (to compute sequences for local and adjacent cells) */
void lte_gold(LTE_DL_FRAME_PARMS *frame_parms,u32 lte_gold_table[20][2][14],u16 Nid_cell); void lte_gold(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table[20][2][14],uint16_t Nid_cell);
void lte_gold_mbsfn(LTE_DL_FRAME_PARMS *frame_parms,u32 lte_gold_mbsfn_table[10][3][42],u16 Nid_MBSFN); void lte_gold_mbsfn(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_mbsfn_table[10][3][42],uint16_t Nid_MBSFN);
/*! \brief This function generates the cell-specific reference signal sequence (36-211, Sec 6.10.1.1) /*! \brief This function generates the cell-specific reference signal sequence (36-211, Sec 6.10.1.1)
...@@ -66,7 +66,7 @@ int lte_dl_mbsfn(PHY_VARS_eNB *phy_vars_eNB, mod_sym_t *output, ...@@ -66,7 +66,7 @@ int lte_dl_mbsfn(PHY_VARS_eNB *phy_vars_eNB, mod_sym_t *output,
@param p antenna intex @param p antenna intex
*/ */
int lte_dl_cell_spec_rx(PHY_VARS_UE *phy_vars_ue, int lte_dl_cell_spec_rx(PHY_VARS_UE *phy_vars_ue,
u8 eNB_offset, uint8_t eNB_offset,
int *output, int *output,
unsigned char Ns, unsigned char Ns,
unsigned char l, unsigned char l,
......
...@@ -216,7 +216,7 @@ int lte_dl_cell_spec(PHY_VARS_eNB *phy_vars_eNB, ...@@ -216,7 +216,7 @@ int lte_dl_cell_spec(PHY_VARS_eNB *phy_vars_eNB,
} }
int lte_dl_cell_spec_rx(PHY_VARS_UE *phy_vars_ue, int lte_dl_cell_spec_rx(PHY_VARS_UE *phy_vars_ue,
u8 eNB_offset, uint8_t eNB_offset,
int *output, int *output,
unsigned char Ns, unsigned char Ns,
unsigned char l, unsigned char l,
......
...@@ -21,7 +21,7 @@ N_{ID}^{cell = 0..503 ...@@ -21,7 +21,7 @@ N_{ID}^{cell = 0..503
//unsigned int lte_gold_table[3][20][2][14]; // need 55 bytes for sequence //unsigned int lte_gold_table[3][20][2][14]; // need 55 bytes for sequence
// slot index x pilot within slot x sequence // slot index x pilot within slot x sequence
void lte_gold(LTE_DL_FRAME_PARMS *frame_parms,u32 lte_gold_table[20][2][14],u16 Nid_cell) { void lte_gold(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table[20][2][14],uint16_t Nid_cell) {
unsigned char ns,l,Ncp=1-frame_parms->Ncp; unsigned char ns,l,Ncp=1-frame_parms->Ncp;
unsigned int n,x1,x2;//,x1tmp,x2tmp; unsigned int n,x1,x2;//,x1tmp,x2tmp;
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include "defs.h" #include "defs.h"
void lte_gold_mbsfn(LTE_DL_FRAME_PARMS *frame_parms,u32 lte_gold_mbsfn_table[10][3][42],u16 Nid_mbsfn) { void lte_gold_mbsfn(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_mbsfn_table[10][3][42],uint16_t Nid_mbsfn) {
unsigned char sfn,l; unsigned char sfn,l;
unsigned int n,x1,x2;//,x1tmp,x2tmp; unsigned int n,x1,x2;//,x1tmp,x2tmp;
......
This diff is collapsed.
This diff is collapsed.
...@@ -426,13 +426,13 @@ typedef struct { ...@@ -426,13 +426,13 @@ typedef struct {
/// ACK/NAK Bundling flag /// ACK/NAK Bundling flag
uint8_t bundling; uint8_t bundling;
/// "q" sequences for CQI/PMI (for definition see 36-212 V8.6 2009-03, p.27) /// "q" sequences for CQI/PMI (for definition see 36-212 V8.6 2009-03, p.27)
s8 q[MAX_CQI_PAYLOAD]; int8_t q[MAX_CQI_PAYLOAD];
/// number of coded CQI bits after interleaving /// number of coded CQI bits after interleaving
uint8_t o_RCC; uint8_t o_RCC;
/// coded and interleaved CQI bits /// coded and interleaved CQI bits
s8 o_w[(MAX_CQI_BITS+8)*3]; int8_t o_w[(MAX_CQI_BITS+8)*3];
/// coded CQI bits /// coded CQI bits
s8 o_d[96+((MAX_CQI_BITS+8)*3)]; int8_t o_d[96+((MAX_CQI_BITS+8)*3)];
/// coded ACK bits /// coded ACK bits
int16_t q_ACK[MAX_ACK_PAYLOAD]; int16_t q_ACK[MAX_ACK_PAYLOAD];
/// coded RI bits /// coded RI bits
...@@ -509,7 +509,7 @@ typedef struct { ...@@ -509,7 +509,7 @@ typedef struct {
/// Number of MIMO layers (streams) (for definition see 36-212 V8.6 2009-03, p.17) /// Number of MIMO layers (streams) (for definition see 36-212 V8.6 2009-03, p.17)
uint8_t Nl; uint8_t Nl;
/// current delta_pucch /// current delta_pucch
s8 delta_PUCCH; int8_t delta_PUCCH;
/// Number of soft channel bits /// Number of soft channel bits
uint32_t G; uint32_t G;
/// Current Number of RBs /// Current Number of RBs
...@@ -525,7 +525,7 @@ typedef struct { ...@@ -525,7 +525,7 @@ typedef struct {
typedef struct { typedef struct {
/// UL RSSI per receive antenna /// UL RSSI per receive antenna
s32 UL_rssi[NB_ANTENNAS_RX]; int32_t UL_rssi[NB_ANTENNAS_RX];
/// DL Wideband CQI index (2 TBs) /// DL Wideband CQI index (2 TBs)
uint8_t DL_cqi[2]; uint8_t DL_cqi[2];
/// DL Subband CQI index (from HLC feedback) /// DL Subband CQI index (from HLC feedback)
...@@ -539,9 +539,9 @@ typedef struct { ...@@ -539,9 +539,9 @@ typedef struct {
/// CRNTI of UE /// CRNTI of UE
uint16_t crnti; ///user id (rnti) of connected UEs uint16_t crnti; ///user id (rnti) of connected UEs
/// Initial timing offset estimate from PRACH for RAR /// Initial timing offset estimate from PRACH for RAR
s32 UE_timing_offset; int32_t UE_timing_offset;
/// Timing advance estimate from PUSCH for MAC timing advance signalling /// Timing advance estimate from PUSCH for MAC timing advance signalling
s32 timing_advance_update; int32_t timing_advance_update;
/// Current mode of UE (NOT SYCHED, RAR, PUSCH) /// Current mode of UE (NOT SYCHED, RAR, PUSCH)
UE_MODE_t mode; UE_MODE_t mode;
/// Current sector where UE is attached /// Current sector where UE is attached
...@@ -569,7 +569,7 @@ typedef struct { ...@@ -569,7 +569,7 @@ typedef struct {
uint32_t sr_received; uint32_t sr_received;
uint32_t sr_total; uint32_t sr_total;
s8 dlsch_mcs_offset; int8_t dlsch_mcs_offset;
/// Target mcs1 after rate-adaptation (used by MAC layer scheduler) /// Target mcs1 after rate-adaptation (used by MAC layer scheduler)
uint8_t dlsch_mcs1; uint8_t dlsch_mcs1;
/// Target mcs2 after rate-adaptation (used by MAC layer scheduler) /// Target mcs2 after rate-adaptation (used by MAC layer scheduler)
......
...@@ -106,7 +106,7 @@ void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch) { ...@@ -106,7 +106,7 @@ void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch) {
} }
LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigned char N_RB_DL, u8 abstraction_flag) { LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigned char N_RB_DL, uint8_t abstraction_flag) {
LTE_eNB_DLSCH_t *dlsch; LTE_eNB_DLSCH_t *dlsch;
unsigned char exit_flag = 0,i,j,r; unsigned char exit_flag = 0,i,j,r;
...@@ -189,7 +189,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigne ...@@ -189,7 +189,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigne
} }
void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch, u8 abstraction_flag) { void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch, uint8_t abstraction_flag) {
unsigned char Mdlharq; unsigned char Mdlharq;
unsigned char i,j,r; unsigned char i,j,r;
...@@ -219,10 +219,10 @@ void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch, u8 abstraction_flag) { ...@@ -219,10 +219,10 @@ void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch, u8 abstraction_flag) {
int dlsch_encoding(unsigned char *a, int dlsch_encoding(unsigned char *a,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
u8 num_pdcch_symbols, uint8_t num_pdcch_symbols,
LTE_eNB_DLSCH_t *dlsch, LTE_eNB_DLSCH_t *dlsch,
int frame, int frame,
u8 subframe, uint8_t subframe,
time_stats_t *rm_stats, time_stats_t *rm_stats,
time_stats_t *te_stats, time_stats_t *te_stats,
time_stats_t *i_stats) { time_stats_t *i_stats) {
...@@ -259,9 +259,9 @@ int dlsch_encoding(unsigned char *a, ...@@ -259,9 +259,9 @@ int dlsch_encoding(unsigned char *a,
// Add 24-bit crc (polynomial A) to payload // Add 24-bit crc (polynomial A) to payload
crc = crc24a(a, crc = crc24a(a,
A)>>8; A)>>8;
a[A>>3] = ((u8*)&crc)[2]; a[A>>3] = ((uint8_t*)&crc)[2];
a[1+(A>>3)] = ((u8*)&crc)[1]; a[1+(A>>3)] = ((uint8_t*)&crc)[1];
a[2+(A>>3)] = ((u8*)&crc)[0]; a[2+(A>>3)] = ((uint8_t*)&crc)[0];
// printf("CRC %x (A %d)\n",crc,A); // printf("CRC %x (A %d)\n",crc,A);
dlsch->harq_processes[harq_pid]->B = A+24; dlsch->harq_processes[harq_pid]->B = A+24;
...@@ -377,7 +377,7 @@ int dlsch_encoding(unsigned char *a, ...@@ -377,7 +377,7 @@ int dlsch_encoding(unsigned char *a,
#ifdef PHY_ABSTRACTION #ifdef PHY_ABSTRACTION
void dlsch_encoding_emul(PHY_VARS_eNB *phy_vars_eNB, void dlsch_encoding_emul(PHY_VARS_eNB *phy_vars_eNB,
u8 *DLSCH_pdu, uint8_t *DLSCH_pdu,
LTE_eNB_DLSCH_t *dlsch) { LTE_eNB_DLSCH_t *dlsch) {
//int payload_offset = 0; //int payload_offset = 0;
......
...@@ -162,13 +162,13 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue, ...@@ -162,13 +162,13 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
uint32_t A,E; uint32_t A,E;
uint32_t G; uint32_t G;
uint32_t ret,offset; uint32_t ret,offset;
u16 iind; uint16_t iind;
// uint8_t dummy_channel_output[(3*8*block_length)+12]; // uint8_t dummy_channel_output[(3*8*block_length)+12];
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(6144+64)]; short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(6144+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0; uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0;
uint8_t crc_type; uint8_t crc_type;
#ifdef DEBUG_DLSCH_DECODING #ifdef DEBUG_DLSCH_DECODING
u16 i; uint16_t i;
#endif #endif
uint8_t (*tc)(int16_t *y, uint8_t (*tc)(int16_t *y,
uint8_t *, uint8_t *,
...@@ -615,7 +615,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue, ...@@ -615,7 +615,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
uint32_t eNB_id2; uint32_t eNB_id2;
uint32_t ue_id; uint32_t ue_id;
#ifdef DEBUG_DLSCH_DECODING #ifdef DEBUG_DLSCH_DECODING
u16 i; uint16_t i;
#endif #endif
// may not be necessary for PMCH?? // may not be necessary for PMCH??
...@@ -662,7 +662,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue, ...@@ -662,7 +662,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
case 2: // TB0 case 2: // TB0
dlsch_ue = phy_vars_ue->dlsch_ue[eNB_id][0]; dlsch_ue = phy_vars_ue->dlsch_ue[eNB_id][0];
harq_pid = dlsch_ue->current_harq_pid; harq_pid = dlsch_ue->current_harq_pid;
ue_id= (uint32_t)find_ue((s16)phy_vars_ue->lte_ue_pdcch_vars[(uint32_t)eNB_id]->crnti,PHY_vars_eNB_g[eNB_id2]); ue_id= (uint32_t)find_ue((int16_t)phy_vars_ue->lte_ue_pdcch_vars[(uint32_t)eNB_id]->crnti,PHY_vars_eNB_g[eNB_id2]);
dlsch_eNB = PHY_vars_eNB_g[eNB_id2]->dlsch_eNB[ue_id][0]; dlsch_eNB = PHY_vars_eNB_g[eNB_id2]->dlsch_eNB[ue_id][0];
#ifdef DEBUG_DLSCH_DECODING #ifdef DEBUG_DLSCH_DECODING
...@@ -698,7 +698,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue, ...@@ -698,7 +698,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
case 3: // TB1 case 3: // TB1
dlsch_ue = phy_vars_ue->dlsch_ue[eNB_id][1]; dlsch_ue = phy_vars_ue->dlsch_ue[eNB_id][1];
harq_pid = dlsch_ue->current_harq_pid; harq_pid = dlsch_ue->current_harq_pid;
dlsch_eNB = PHY_vars_eNB_g[eNB_id2]->dlsch_eNB[(uint32_t)find_ue((s16)phy_vars_ue->lte_ue_pdcch_vars[(uint32_t)eNB_id]->crnti, dlsch_eNB = PHY_vars_eNB_g[eNB_id2]->dlsch_eNB[(uint32_t)find_ue((int16_t)phy_vars_ue->lte_ue_pdcch_vars[(uint32_t)eNB_id]->crnti,
PHY_vars_eNB_g[eNB_id2])][1]; PHY_vars_eNB_g[eNB_id2])][1];
// reset HARQ // reset HARQ
dlsch_ue->harq_processes[harq_pid]->status = SCH_IDLE; dlsch_ue->harq_processes[harq_pid]->status = SCH_IDLE;
......
...@@ -92,7 +92,7 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue, ...@@ -92,7 +92,7 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
PDSCH_t type, PDSCH_t type,
unsigned char eNB_id, unsigned char eNB_id,
unsigned char eNB_id_i, //if this == phy_vars_ue->n_connected_eNB, we assume MU interference unsigned char eNB_id_i, //if this == phy_vars_ue->n_connected_eNB, we assume MU interference
u8 subframe, uint8_t subframe,
unsigned char symbol, unsigned char symbol,
unsigned char first_symbol_flag, unsigned char first_symbol_flag,
unsigned char dual_stream_flag, unsigned char dual_stream_flag,
...@@ -655,7 +655,7 @@ void dlsch_channel_compensation(int **rxdataF_ext, ...@@ -655,7 +655,7 @@ void dlsch_channel_compensation(int **rxdataF_ext,
int **rho, int **rho,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
unsigned char symbol, unsigned char symbol,
u8 first_symbol_flag, uint8_t first_symbol_flag,
unsigned char mod_order, unsigned char mod_order,
unsigned short nb_rb, unsigned short nb_rb,
unsigned char output_shift, unsigned char output_shift,
...@@ -1334,7 +1334,7 @@ void dlsch_detection_mrc(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -1334,7 +1334,7 @@ void dlsch_detection_mrc(LTE_DL_FRAME_PARMS *frame_parms,
void dlsch_scale_channel(int **dl_ch_estimates_ext, void dlsch_scale_channel(int **dl_ch_estimates_ext,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
LTE_UE_DLSCH_t **dlsch_ue, LTE_UE_DLSCH_t **dlsch_ue,
u8 symbol, uint8_t symbol,
unsigned short nb_rb){ unsigned short nb_rb){
short rb, ch_amp; short rb, ch_amp;
...@@ -1385,7 +1385,7 @@ void dlsch_scale_channel(int **dl_ch_estimates_ext, ...@@ -1385,7 +1385,7 @@ void dlsch_scale_channel(int **dl_ch_estimates_ext,
void dlsch_channel_level(int **dl_ch_estimates_ext, void dlsch_channel_level(int **dl_ch_estimates_ext,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
int *avg, int *avg,
u8 symbol, uint8_t symbol,
unsigned short nb_rb){ unsigned short nb_rb){
short rb; short rb;
...@@ -1447,7 +1447,7 @@ void dlsch_channel_level_prec(int **dl_ch_estimates_ext, ...@@ -1447,7 +1447,7 @@ void dlsch_channel_level_prec(int **dl_ch_estimates_ext,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
unsigned char *pmi_ext, unsigned char *pmi_ext,
int *avg, int *avg,
u8 symbol, uint8_t symbol,
unsigned short nb_rb){ unsigned short nb_rb){
short rb; short rb;
...@@ -1530,8 +1530,8 @@ void dlsch_alamouti(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -1530,8 +1530,8 @@ void dlsch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
__m128i *ch_mag0,*ch_mag1,*ch_mag0b,*ch_mag1b, amp, *rxF0_128; __m128i *ch_mag0,*ch_mag1,*ch_mag0b,*ch_mag1b, amp, *rxF0_128;
unsigned char rb,re; unsigned char rb,re;
int jj = (symbol*frame_parms->N_RB_DL*12); int jj = (symbol*frame_parms->N_RB_DL*12);
u8 symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol; uint8_t symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
u8 pilots = ((symbol_mod==0)||(symbol_mod==(4-frame_parms->Ncp))) ? 1 : 0; uint8_t pilots = ((symbol_mod==0)||(symbol_mod==(4-frame_parms->Ncp))) ? 1 : 0;
rxF0_128 = (__m128i*) &rxdataF_comp[0][jj]; rxF0_128 = (__m128i*) &rxdataF_comp[0][jj];
amp = _mm_set1_epi16(ONE_OVER_SQRT2_Q15); amp = _mm_set1_epi16(ONE_OVER_SQRT2_Q15);
...@@ -2932,7 +2932,7 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF, ...@@ -2932,7 +2932,7 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
#ifdef USER_MODE #ifdef USER_MODE
void dump_dlsch2(PHY_VARS_UE *phy_vars_ue,u8 eNB_id,u16 coded_bits_per_codeword) { void dump_dlsch2(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per_codeword) {
unsigned int nsymb = (phy_vars_ue->lte_frame_parms.Ncp == 0) ? 14 : 12; unsigned int nsymb = (phy_vars_ue->lte_frame_parms.Ncp == 0) ? 14 : 12;
char fname[32],vname[32]; char fname[32],vname[32];
......
...@@ -52,13 +52,13 @@ void dlsch_scrambling(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -52,13 +52,13 @@ void dlsch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
int mbsfn_flag, int mbsfn_flag,
LTE_eNB_DLSCH_t *dlsch, LTE_eNB_DLSCH_t *dlsch,
int G, int G,
u8 q, uint8_t q,
u8 Ns) { uint8_t Ns) {
int i,j,k=0; int i,j,k=0;
// u8 reset; // uint8_t reset;
u32 x1, x2, s=0; uint32_t x1, x2, s=0;
u8 *e=dlsch->e; uint8_t *e=dlsch->e;
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_SCRAMBLING, VCD_FUNCTION_IN); vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_SCRAMBLING, VCD_FUNCTION_IN);
...@@ -97,13 +97,13 @@ void dlsch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -97,13 +97,13 @@ void dlsch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
int mbsfn_flag, int mbsfn_flag,
LTE_UE_DLSCH_t *dlsch, LTE_UE_DLSCH_t *dlsch,
int G, int G,
s16* llr, int16_t* llr,
u8 q, uint8_t q,
u8 Ns) { uint8_t Ns) {
int i,j,k=0; int i,j,k=0;
// u8 reset; // uint8_t reset;
u32 x1, x2, s=0; uint32_t x1, x2, s=0;
// reset = 1; // reset = 1;
// x1 is set in first call to lte_gold_generic // x1 is set in first call to lte_gold_generic
......
...@@ -44,33 +44,33 @@ ...@@ -44,33 +44,33 @@
//#define DEBUG_DRS //#define DEBUG_DRS
int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue, int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
u8 eNB_id, uint8_t eNB_id,
short amp, short amp,
unsigned int subframe, unsigned int subframe,
unsigned int first_rb, unsigned int first_rb,
unsigned int nb_rb, unsigned int nb_rb,
u8 ant) { uint8_t ant) {
u16 k,l,Msc_RS,Msc_RS_idx,rb,drs_offset; uint16_t k,l,Msc_RS,Msc_RS_idx,rb,drs_offset;
u16 * Msc_idx_ptr; uint16_t * Msc_idx_ptr;
int subframe_offset,re_offset,symbol_offset; int subframe_offset,re_offset,symbol_offset;
//u32 phase_shift; // phase shift for cyclic delay in DM RS //uint32_t phase_shift; // phase shift for cyclic delay in DM RS
//u8 alpha_ind; //uint8_t alpha_ind;
s16 alpha_re[12] = {32767, 28377, 16383, 0,-16384, -28378,-32768,-28378,-16384, -1, 16383, 28377}; int16_t alpha_re[12] = {32767, 28377, 16383, 0,-16384, -28378,-32768,-28378,-16384, -1, 16383, 28377};
s16 alpha_im[12] = {0, 16383, 28377, 32767, 28377, 16383, 0,-16384,-28378,-32768,-28378,-16384}; int16_t alpha_im[12] = {0, 16383, 28377, 32767, 28377, 16383, 0,-16384,-28378,-32768,-28378,-16384};
u8 cyclic_shift,cyclic_shift0,cyclic_shift1; uint8_t cyclic_shift,cyclic_shift0,cyclic_shift1;
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms;
mod_sym_t *txdataF = phy_vars_ue->lte_ue_common_vars.txdataF[ant]; mod_sym_t *txdataF = phy_vars_ue->lte_ue_common_vars.txdataF[ant];
u32 u,v,alpha_ind; uint32_t u,v,alpha_ind;
u32 u0=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[subframe<<1]; uint32_t u0=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[subframe<<1];
u32 u1=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[1+(subframe<<1)]; uint32_t u1=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[1+(subframe<<1)];
u32 v0=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[subframe<<1]; uint32_t v0=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[subframe<<1];
u32 v1=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[1+(subframe<<1)]; uint32_t v1=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[1+(subframe<<1)];
s32 ref_re,ref_im; int32_t ref_re,ref_im;
u8 harq_pid = subframe2harq_pid(frame_parms,phy_vars_ue->frame,subframe); uint8_t harq_pid = subframe2harq_pid(frame_parms,phy_vars_ue->frame,subframe);
cyclic_shift0 = (frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift + cyclic_shift0 = (frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift +
phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->n_DMRS2 + phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->n_DMRS2 +
...@@ -89,7 +89,7 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue, ...@@ -89,7 +89,7 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
Msc_RS = 12*nb_rb; Msc_RS = 12*nb_rb;
#ifdef USER_MODE #ifdef USER_MODE
Msc_idx_ptr = (u16*) bsearch(&Msc_RS, dftsizes, 33, sizeof(u16), compareints); Msc_idx_ptr = (uint16_t*) bsearch(&Msc_RS, dftsizes, 33, sizeof(uint16_t), compareints);
if (Msc_idx_ptr) if (Msc_idx_ptr)
Msc_RS_idx = Msc_idx_ptr - dftsizes; Msc_RS_idx = Msc_idx_ptr - dftsizes;
else { else {
...@@ -97,7 +97,7 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue, ...@@ -97,7 +97,7 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
return(-1); return(-1);
} }
#else #else
u8 b; uint8_t b;
for (b=0;b<33;b++) for (b=0;b<33;b++)
if (Msc_RS==dftsizes[b]) if (Msc_RS==dftsizes[b])
Msc_RS_idx = b; Msc_RS_idx = b;
...@@ -186,15 +186,15 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue, ...@@ -186,15 +186,15 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
#else //IFFT_FPGA_UE #else //IFFT_FPGA_UE
for (k=0;k<12;k++) { for (k=0;k<12;k++) {
ref_re = (s32) ul_ref_sigs[u][v][Msc_RS_idx][drs_offset<<1]; ref_re = (int32_t) ul_ref_sigs[u][v][Msc_RS_idx][drs_offset<<1];
ref_im = (s32) ul_ref_sigs[u][v][Msc_RS_idx][(drs_offset<<1)+1]; ref_im = (int32_t) ul_ref_sigs[u][v][Msc_RS_idx][(drs_offset<<1)+1];
((s16*) txdataF)[2*(symbol_offset + re_offset)] = (s16) (((ref_re*alpha_re[alpha_ind]) - ((int16_t*) txdataF)[2*(symbol_offset + re_offset)] = (int16_t) (((ref_re*alpha_re[alpha_ind]) -
(ref_im*alpha_im[alpha_ind]))>>15); (ref_im*alpha_im[alpha_ind]))>>15);
((s16*) txdataF)[2*(symbol_offset + re_offset)+1] = (s16) (((ref_re*alpha_im[alpha_ind]) + ((int16_t*) txdataF)[2*(symbol_offset + re_offset)+1] = (int16_t) (((ref_re*alpha_im[alpha_ind]) +
(ref_im*alpha_re[alpha_ind]))>>15); (ref_im*alpha_re[alpha_ind]))>>15);
((short*) txdataF)[2*(symbol_offset + re_offset)] = (short) ((((short*) txdataF)[2*(symbol_offset + re_offset)]*(s32)amp)>>15); ((short*) txdataF)[2*(symbol_offset + re_offset)] = (short) ((((short*) txdataF)[2*(symbol_offset + re_offset)]*(int32_t)amp)>>15);
((short*) txdataF)[2*(symbol_offset + re_offset)+1] = (short) ((((short*) txdataF)[2*(symbol_offset + re_offset)+1]*(s32)amp)>>15); ((short*) txdataF)[2*(symbol_offset + re_offset)+1] = (short) ((((short*) txdataF)[2*(symbol_offset + re_offset)+1]*(int32_t)amp)>>15);
alpha_ind = (alpha_ind + cyclic_shift); alpha_ind = (alpha_ind + cyclic_shift);
......
...@@ -21,7 +21,7 @@ extern unsigned short scfdma_amps[26]; ...@@ -21,7 +21,7 @@ extern unsigned short scfdma_amps[26];
extern char dci_format_strings[15][13]; extern char dci_format_strings[15][13];
extern s16 d0_sss[504*62],d5_sss[504*62]; extern int16_t d0_sss[504*62],d5_sss[504*62];
extern u8 wACK[5][4]; extern uint8_t wACK[5][4];
extern s8 wACK_RX[5][4]; extern int8_t wACK_RX[5][4];
...@@ -43,11 +43,11 @@ ...@@ -43,11 +43,11 @@
void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms) { void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms) {
u8 ns; uint8_t ns;
u8 reset=1; uint8_t reset=1;
u32 x1, x2, s=0; uint32_t x1, x2, s=0;
// This is from Section 5.5.1.3 // This is from Section 5.5.1.3
u32 fss_pusch = frame_parms->Nid_cell + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH; uint32_t fss_pusch = frame_parms->Nid_cell + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH;
x2 = frame_parms->Nid_cell/30; x2 = frame_parms->Nid_cell/30;
#ifdef DEBUG_GROUPHOP #ifdef DEBUG_GROUPHOP
...@@ -61,7 +61,7 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms) { ...@@ -61,7 +61,7 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms) {
s = lte_gold_generic(&x1,&x2,reset); s = lte_gold_generic(&x1,&x2,reset);
reset = 0; reset = 0;
} }
frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[ns] = (((u8*)&s)[ns&3]+fss_pusch)%30; frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[ns] = (((uint8_t*)&s)[ns&3]+fss_pusch)%30;
} }
#ifdef DEBUG_GROUPHOP #ifdef DEBUG_GROUPHOP
msg("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[ns]); msg("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[ns]);
...@@ -74,10 +74,10 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms) { ...@@ -74,10 +74,10 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms) {
void generate_seqhop(LTE_DL_FRAME_PARMS *frame_parms) { void generate_seqhop(LTE_DL_FRAME_PARMS *frame_parms) {
u8 ns,reset=1; uint8_t ns,reset=1;
u32 x1, x2, s=0; uint32_t x1, x2, s=0;
// This is from Section 5.5.1.3 // This is from Section 5.5.1.3
u32 fss_pusch = frame_parms->Nid_cell + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH; uint32_t fss_pusch = frame_parms->Nid_cell + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH;
x2 = (32*(frame_parms->Nid_cell/30) + fss_pusch)%30; x2 = (32*(frame_parms->Nid_cell/30) + fss_pusch)%30;
...@@ -102,17 +102,17 @@ void generate_seqhop(LTE_DL_FRAME_PARMS *frame_parms) { ...@@ -102,17 +102,17 @@ void generate_seqhop(LTE_DL_FRAME_PARMS *frame_parms) {
void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms) { void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms) {
u16 n=0; uint16_t n=0;
u8 reset=1; uint8_t reset=1;
u32 x1, x2, s=0; uint32_t x1, x2, s=0;
// This is from Section 5.5.1.3 // This is from Section 5.5.1.3
u8 Nsymb_UL = (frame_parms->Ncp_UL == 0) ? 7 : 6; uint8_t Nsymb_UL = (frame_parms->Ncp_UL == 0) ? 7 : 6;
u16 next = 0; uint16_t next = 0;
u8 ns=0; uint8_t ns=0;
u32 fss_pusch = frame_parms->Nid_cell + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH; uint32_t fss_pusch = frame_parms->Nid_cell + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH;
x2 = (32*(u32)(frame_parms->Nid_cell/30)) + fss_pusch; x2 = (32*(uint32_t)(frame_parms->Nid_cell/30)) + fss_pusch;
#ifdef DEBUG_GROUPHOP #ifdef DEBUG_GROUPHOP
msg("[PHY] nPRS:"); msg("[PHY] nPRS:");
#endif #endif
...@@ -120,10 +120,10 @@ void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms) { ...@@ -120,10 +120,10 @@ void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms) {
if ((n&3) == 0) { if ((n&3) == 0) {
s = lte_gold_generic(&x1,&x2,reset); s = lte_gold_generic(&x1,&x2,reset);
reset = 0; reset = 0;
// printf("n %d : s (%d,%d,%d,%d)\n",n,((u8*)&s)[0],((u8*)&s)[1],((u8*)&s)[2],((u8*)&s)[3]); // printf("n %d : s (%d,%d,%d,%d)\n",n,((uint8_t*)&s)[0],((uint8_t*)&s)[1],((uint8_t*)&s)[2],((uint8_t*)&s)[3]);
} }
if (n == next) { if (n == next) {
frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[ns] = ((u8*)&s)[next&3]; frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[ns] = ((uint8_t*)&s)[next&3];
#ifdef DEBUG_GROUPHOP #ifdef DEBUG_GROUPHOP
msg("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[ns]); msg("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[ns]);
#endif #endif
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
int pbch_detection(PHY_VARS_UE *phy_vars_ue, runmode_t mode) { int pbch_detection(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
u8 l,pbch_decoded,frame_mod4,pbch_tx_ant,dummy; uint8_t l,pbch_decoded,frame_mod4,pbch_tx_ant,dummy;
LTE_DL_FRAME_PARMS *frame_parms=&phy_vars_ue->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms=&phy_vars_ue->lte_frame_parms;
char phich_resource[6]; char phich_resource[6];
...@@ -231,13 +231,13 @@ int pbch_detection(PHY_VARS_UE *phy_vars_ue, runmode_t mode) { ...@@ -231,13 +231,13 @@ int pbch_detection(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) { int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
u32 sync_pos,sync_pos2,sync_pos_slot; uint32_t sync_pos,sync_pos2,sync_pos_slot;
s32 metric_fdd_ncp=0,metric_fdd_ecp=0,metric_tdd_ncp=0,metric_tdd_ecp=0; int32_t metric_fdd_ncp=0,metric_fdd_ecp=0,metric_tdd_ncp=0,metric_tdd_ecp=0;
u8 phase_fdd_ncp,phase_fdd_ecp,phase_tdd_ncp,phase_tdd_ecp; uint8_t phase_fdd_ncp,phase_fdd_ecp,phase_tdd_ncp,phase_tdd_ecp;
u8 flip_fdd_ncp,flip_fdd_ecp,flip_tdd_ncp,flip_tdd_ecp; uint8_t flip_fdd_ncp,flip_fdd_ecp,flip_tdd_ncp,flip_tdd_ecp;
// u16 Nid_cell_fdd_ncp=0,Nid_cell_fdd_ecp=0,Nid_cell_tdd_ncp=0,Nid_cell_tdd_ecp=0; // uint16_t Nid_cell_fdd_ncp=0,Nid_cell_fdd_ecp=0,Nid_cell_tdd_ncp=0,Nid_cell_tdd_ecp=0;
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms;
// u8 i; // uint8_t i;
int ret=-1; int ret=-1;
int aarx,rx_power=0; int aarx,rx_power=0;
......
...@@ -106,9 +106,9 @@ unsigned char I_TBS2I_MCS(unsigned char I_TBS) { ...@@ -106,9 +106,9 @@ unsigned char I_TBS2I_MCS(unsigned char I_TBS) {
return I_MCS; return I_MCS;
} }
u16 get_TBS_DL(u8 mcs, u16 nb_rb) { uint64_t get_TBS_DL(uint8_t mcs, uint16_t nb_rb) {
u16 TBS; uint64_t TBS;
if ((nb_rb > 0) && (mcs < 29)) { if ((nb_rb > 0) && (mcs < 29)) {
#ifdef TBS_FIX #ifdef TBS_FIX
...@@ -121,13 +121,13 @@ u16 get_TBS_DL(u8 mcs, u16 nb_rb) { ...@@ -121,13 +121,13 @@ u16 get_TBS_DL(u8 mcs, u16 nb_rb) {
return(TBS); return(TBS);
} }
else { else {
return(0); return(uint64_t)0;
} }
} }
u16 get_TBS_UL(u8 mcs, u16 nb_rb) { uint64_t get_TBS_UL(uint8_t mcs, uint16_t nb_rb) {
u16 TBS = 0; uint64_t TBS = 0;
if ((nb_rb > 0) && (mcs < 29)) { if ((nb_rb > 0) && (mcs < 29)) {
#ifdef TBS_FIX #ifdef TBS_FIX
...@@ -140,12 +140,12 @@ u16 get_TBS_UL(u8 mcs, u16 nb_rb) { ...@@ -140,12 +140,12 @@ u16 get_TBS_UL(u8 mcs, u16 nb_rb) {
return(TBS); return(TBS);
} }
else { else {
return(0); return(uint64_t)0;
} }
} }
int adjust_G2(LTE_DL_FRAME_PARMS *frame_parms,u32 *rb_alloc,u8 mod_order,u8 subframe,u8 symbol) { int adjust_G2(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *rb_alloc,uint8_t mod_order,uint8_t subframe,uint8_t symbol) {
int rb,re_pbch_sss=0; int rb,re_pbch_sss=0;
int rb_alloc_ind,nsymb; int rb_alloc_ind,nsymb;
...@@ -237,10 +237,10 @@ int adjust_G2(LTE_DL_FRAME_PARMS *frame_parms,u32 *rb_alloc,u8 mod_order,u8 subf ...@@ -237,10 +237,10 @@ int adjust_G2(LTE_DL_FRAME_PARMS *frame_parms,u32 *rb_alloc,u8 mod_order,u8 subf
return(re_pbch_sss); return(re_pbch_sss);
} }
int adjust_G(LTE_DL_FRAME_PARMS *frame_parms,u32 *rb_alloc,u8 mod_order,u8 subframe) { int adjust_G(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *rb_alloc,uint8_t mod_order,uint8_t subframe) {
int rb,re_pbch_sss=0; int rb,re_pbch_sss=0;
u8 rb_alloc_ind; uint8_t rb_alloc_ind;
if ((subframe!=0) && (subframe!=5) && (subframe!=6)) // if not PBCH/SSS/PSS or SSS/PSS if ((subframe!=0) && (subframe!=5) && (subframe!=6)) // if not PBCH/SSS/PSS or SSS/PSS
return(0); return(0);
...@@ -326,7 +326,7 @@ int adjust_G(LTE_DL_FRAME_PARMS *frame_parms,u32 *rb_alloc,u8 mod_order,u8 subfr ...@@ -326,7 +326,7 @@ int adjust_G(LTE_DL_FRAME_PARMS *frame_parms,u32 *rb_alloc,u8 mod_order,u8 subfr
return(0); return(0);
} }
int get_G(LTE_DL_FRAME_PARMS *frame_parms,u16 nb_rb,u32 *rb_alloc,u8 mod_order,u8 num_pdcch_symbols,int frame,u8 subframe) { int get_G(LTE_DL_FRAME_PARMS *frame_parms,uint16_t nb_rb,uint32_t *rb_alloc,uint8_t mod_order,uint8_t num_pdcch_symbols,int frame,uint8_t subframe) {
...@@ -396,7 +396,7 @@ unsigned char SE2I_TBS(float SE, ...@@ -396,7 +396,7 @@ unsigned char SE2I_TBS(float SE,
//added for ALU icic purpose //added for ALU icic purpose
u8 Get_SB_size(u8 n_rb_dl){ uint8_t Get_SB_size(uint8_t n_rb_dl){
if(n_rb_dl<27) if(n_rb_dl<27)
return 4; return 4;
......
...@@ -70,30 +70,30 @@ extern __m128i zero; ...@@ -70,30 +70,30 @@ extern __m128i zero;
#define PBCH_A 24 #define PBCH_A 24
//u8 pbch_d[96+(3*(16+PBCH_A))], pbch_w[3*3*(16+PBCH_A)],pbch_e[1920]; //one bit per byte //uint8_t pbch_d[96+(3*(16+PBCH_A))], pbch_w[3*3*(16+PBCH_A)],pbch_e[1920]; //one bit per byte
int generate_pbch(LTE_eNB_PBCH *eNB_pbch, int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
mod_sym_t **txdataF, mod_sym_t **txdataF,
int amp, int amp,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
u8 *pbch_pdu, uint8_t *pbch_pdu,
u8 frame_mod4) { uint8_t frame_mod4) {
int i, l; int i, l;
u32 pbch_D,pbch_E;//,pbch_coded_bytes; uint32_t pbch_D,pbch_E;//,pbch_coded_bytes;
u8 pbch_a[PBCH_A>>3]; uint8_t pbch_a[PBCH_A>>3];
u8 RCC; uint8_t RCC;
u32 nsymb = (frame_parms->Ncp==NORMAL) ? 14:12; uint32_t nsymb = (frame_parms->Ncp==NORMAL) ? 14:12;
u32 pilots; uint32_t pilots;
#ifdef INTERFERENCE_MITIGATION #ifdef INTERFERENCE_MITIGATION
u32 pilots_2; uint32_t pilots_2;
#endif #endif
u32 second_pilot = (frame_parms->Ncp==NORMAL) ? 4 : 3; uint32_t second_pilot = (frame_parms->Ncp==NORMAL) ? 4 : 3;
u32 jj=0; uint32_t jj=0;
u32 re_allocated=0; uint32_t re_allocated=0;
u32 rb, re_offset, symbol_offset; uint32_t rb, re_offset, symbol_offset;
u16 amask=0; uint16_t amask=0;
pbch_D = 16+PBCH_A; pbch_D = 16+PBCH_A;
...@@ -107,19 +107,19 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch, ...@@ -107,19 +107,19 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
// Encode data // Encode data
// CRC attachment // CRC attachment
// crc = (u16) (crc16(pbch_pdu, pbch_crc_bits-16) >> 16); // crc = (uint16_t) (crc16(pbch_pdu, pbch_crc_bits-16) >> 16);
/* /*
// scramble crc with PBCH CRC mask (Table 5.3.1.1-1 of 3GPP 36.212-860) // scramble crc with PBCH CRC mask (Table 5.3.1.1-1 of 3GPP 36.212-860)
switch (frame_parms->nb_antennas_tx_eNB) { switch (frame_parms->nb_antennas_tx_eNB) {
case 1: case 1:
crc = crc ^ (u16) 0; crc = crc ^ (uint16_t) 0;
break; break;
case 2: case 2:
crc = crc ^ (u16) 0xFFFF; crc = crc ^ (uint16_t) 0xFFFF;
break; break;
case 4: case 4:
crc = crc ^ (u16) 0xAAAA; crc = crc ^ (uint16_t) 0xAAAA;
break; break;
default: default:
msg("[PBCH] Unknown number of TX antennas!\n"); msg("[PBCH] Unknown number of TX antennas!\n");
...@@ -320,29 +320,29 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch, ...@@ -320,29 +320,29 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
return(0); return(0);
} }
s32 generate_pbch_emul(PHY_VARS_eNB *phy_vars_eNB,u8 *pbch_pdu) { int32_t generate_pbch_emul(PHY_VARS_eNB *phy_vars_eNB,uint8_t *pbch_pdu) {
LOG_D(PHY,"[eNB %d] generate_pbch_emul \n",phy_vars_eNB->Mod_id); LOG_D(PHY,"[eNB %d] generate_pbch_emul \n",phy_vars_eNB->Mod_id);
eNB_transport_info[phy_vars_eNB->Mod_id].cntl.pbch_flag=1; eNB_transport_info[phy_vars_eNB->Mod_id].cntl.pbch_flag=1;
// Copy PBCH payload // Copy PBCH payload
eNB_transport_info[phy_vars_eNB->Mod_id].cntl.pbch_payload=*(u32 *)pbch_pdu; eNB_transport_info[phy_vars_eNB->Mod_id].cntl.pbch_payload=*(uint32_t *)pbch_pdu;
return(0); return(0);
} }
u16 pbch_extract(int **rxdataF, uint16_t pbch_extract(int **rxdataF,
int **dl_ch_estimates, int **dl_ch_estimates,
int **rxdataF_ext, int **rxdataF_ext,
int **dl_ch_estimates_ext, int **dl_ch_estimates_ext,
u32 symbol, uint32_t symbol,
LTE_DL_FRAME_PARMS *frame_parms) { LTE_DL_FRAME_PARMS *frame_parms) {
u16 rb,nb_rb=6; uint16_t rb,nb_rb=6;
u8 i,j,aarx,aatx; uint8_t i,j,aarx,aatx;
int *dl_ch0,*dl_ch0_ext,*rxF,*rxF_ext; int *dl_ch0,*dl_ch0_ext,*rxF,*rxF_ext;
u32 nsymb = (frame_parms->Ncp==0) ? 7:6; uint32_t nsymb = (frame_parms->Ncp==0) ? 7:6;
u32 symbol_mod = symbol % nsymb; uint32_t symbol_mod = symbol % nsymb;
int rx_offset = frame_parms->ofdm_symbol_size-3*12; int rx_offset = frame_parms->ofdm_symbol_size-3*12;
int ch_offset = frame_parms->N_RB_DL*6-3*12; int ch_offset = frame_parms->N_RB_DL*6-3*12;
...@@ -447,15 +447,15 @@ __m128i avg128; ...@@ -447,15 +447,15 @@ __m128i avg128;
//compute average channel_level on each (TX,RX) antenna pair //compute average channel_level on each (TX,RX) antenna pair
int pbch_channel_level(int **dl_ch_estimates_ext, int pbch_channel_level(int **dl_ch_estimates_ext,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
u32 symbol) { uint32_t symbol) {
s16 rb, nb_rb=6; int16_t rb, nb_rb=6;
u8 aatx,aarx; uint8_t aatx,aarx;
__m128i *dl_ch128; __m128i *dl_ch128;
int avg1=0,avg2=0; int avg1=0,avg2=0;
u32 nsymb = (frame_parms->Ncp==0) ? 7:6; uint32_t nsymb = (frame_parms->Ncp==0) ? 7:6;
u32 symbol_mod = symbol % nsymb; uint32_t symbol_mod = symbol % nsymb;
for (aatx=0;aatx<4;aatx++) //frame_parms->nb_antennas_tx_eNB;aatx++) for (aatx=0;aatx<4;aatx++) //frame_parms->nb_antennas_tx_eNB;aatx++)
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) { for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
...@@ -503,11 +503,11 @@ void pbch_channel_compensation(int **rxdataF_ext, ...@@ -503,11 +503,11 @@ void pbch_channel_compensation(int **rxdataF_ext,
int **dl_ch_estimates_ext, int **dl_ch_estimates_ext,
int **rxdataF_comp, int **rxdataF_comp,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
u8 symbol, uint8_t symbol,
u8 output_shift) { uint8_t output_shift) {
u16 rb,nb_rb=6; uint16_t rb,nb_rb=6;
u8 aatx,aarx,symbol_mod; uint8_t aatx,aarx,symbol_mod;
__m128i *dl_ch128,*rxdataF128,*rxdataF_comp128; __m128i *dl_ch128,*rxdataF128,*rxdataF_comp128;
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol; symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
...@@ -598,9 +598,9 @@ void pbch_channel_compensation(int **rxdataF_ext, ...@@ -598,9 +598,9 @@ void pbch_channel_compensation(int **rxdataF_ext,
void pbch_detection_mrc(LTE_DL_FRAME_PARMS *frame_parms, void pbch_detection_mrc(LTE_DL_FRAME_PARMS *frame_parms,
int **rxdataF_comp, int **rxdataF_comp,
u8 symbol) { uint8_t symbol) {
u8 aatx, symbol_mod; uint8_t aatx, symbol_mod;
int i, nb_rb=6; int i, nb_rb=6;
__m128i *rxdataF_comp128_0,*rxdataF_comp128_1; __m128i *rxdataF_comp128_0,*rxdataF_comp128_1;
...@@ -621,11 +621,11 @@ void pbch_detection_mrc(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -621,11 +621,11 @@ void pbch_detection_mrc(LTE_DL_FRAME_PARMS *frame_parms,
} }
void pbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms, void pbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
u8 *pbch_e, uint8_t *pbch_e,
u32 length) { uint32_t length) {
int i; int i;
u8 reset; uint8_t reset;
u32 x1, x2, s=0; uint32_t x1, x2, s=0;
reset = 1; reset = 1;
// x1 is set in lte_gold_generic // x1 is set in lte_gold_generic
...@@ -645,12 +645,12 @@ void pbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -645,12 +645,12 @@ void pbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
} }
void pbch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms, void pbch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
s8* llr, int8_t* llr,
u32 length, uint32_t length,
u8 frame_mod4) { uint8_t frame_mod4) {
int i; int i;
u8 reset; uint8_t reset;
u32 x1, x2, s=0; uint32_t x1, x2, s=0;
reset = 1; reset = 1;
// x1 is set in first call to lte_gold_generic // x1 is set in first call to lte_gold_generic
...@@ -675,20 +675,20 @@ void pbch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -675,20 +675,20 @@ void pbch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
void pbch_alamouti(LTE_DL_FRAME_PARMS *frame_parms, void pbch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
int **rxdataF_comp, int **rxdataF_comp,
u8 symbol) { uint8_t symbol) {
s16 *rxF0,*rxF1; int16_t *rxF0,*rxF1;
// __m128i *ch_mag0,*ch_mag1,*ch_mag0b,*ch_mag1b; // __m128i *ch_mag0,*ch_mag1,*ch_mag0b,*ch_mag1b;
u8 rb,re,symbol_mod; uint8_t rb,re,symbol_mod;
int jj; int jj;
// printf("Doing alamouti\n"); // printf("Doing alamouti\n");
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol; symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
jj = (symbol_mod*6*12); jj = (symbol_mod*6*12);
rxF0 = (s16*)&rxdataF_comp[0][jj]; //tx antenna 0 h0*y rxF0 = (int16_t*)&rxdataF_comp[0][jj]; //tx antenna 0 h0*y
rxF1 = (s16*)&rxdataF_comp[2][jj]; //tx antenna 1 h1*y rxF1 = (int16_t*)&rxdataF_comp[2][jj]; //tx antenna 1 h1*y
for (rb=0;rb<6;rb++) { for (rb=0;rb<6;rb++) {
...@@ -713,11 +713,11 @@ void pbch_alamouti(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -713,11 +713,11 @@ void pbch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
} }
void pbch_quantize(s8 *pbch_llr8, void pbch_quantize(int8_t *pbch_llr8,
s16 *pbch_llr, int16_t *pbch_llr,
u16 len) { uint16_t len) {
u16 i; uint16_t i;
for (i=0;i<len;i++) { for (i=0;i<len;i++) {
if (pbch_llr[i]>7) if (pbch_llr[i]>7)
...@@ -734,25 +734,25 @@ static unsigned char dummy_w_rx[3*3*(16+PBCH_A)]; ...@@ -734,25 +734,25 @@ static unsigned char dummy_w_rx[3*3*(16+PBCH_A)];
static int8_t pbch_w_rx[3*3*(16+PBCH_A)],pbch_d_rx[96+(3*(16+PBCH_A))]; static int8_t pbch_w_rx[3*3*(16+PBCH_A)],pbch_d_rx[96+(3*(16+PBCH_A))];
u16 rx_pbch(LTE_UE_COMMON *lte_ue_common_vars, uint16_t rx_pbch(LTE_UE_COMMON *lte_ue_common_vars,
LTE_UE_PBCH *lte_ue_pbch_vars, LTE_UE_PBCH *lte_ue_pbch_vars,
LTE_DL_FRAME_PARMS *frame_parms, LTE_DL_FRAME_PARMS *frame_parms,
u8 eNB_id, uint8_t eNB_id,
MIMO_mode_t mimo_mode, MIMO_mode_t mimo_mode,
u8 frame_mod4) { uint8_t frame_mod4) {
u8 log2_maxh;//,aatx,aarx; uint8_t log2_maxh;//,aatx,aarx;
int max_h=0; int max_h=0;
int symbol,i; int symbol,i;
u32 nsymb = (frame_parms->Ncp==0) ? 14:12; uint32_t nsymb = (frame_parms->Ncp==0) ? 14:12;
u16 pbch_E; uint16_t pbch_E;
u8 pbch_a[8]; uint8_t pbch_a[8];
u8 RCC; uint8_t RCC;
s8 *pbch_e_rx; int8_t *pbch_e_rx;
u8 *decoded_output = lte_ue_pbch_vars->decoded_output; uint8_t *decoded_output = lte_ue_pbch_vars->decoded_output;
u16 crc; uint16_t crc;
// pbch_D = 16+PBCH_A; // pbch_D = 16+PBCH_A;
...@@ -886,11 +886,11 @@ u16 rx_pbch(LTE_UE_COMMON *lte_ue_common_vars, ...@@ -886,11 +886,11 @@ u16 rx_pbch(LTE_UE_COMMON *lte_ue_common_vars,
#ifdef DEBUG_PBCH #ifdef DEBUG_PBCH
msg("PBCH CRC %x : %x\n", msg("PBCH CRC %x : %x\n",
crc16(pbch_a,PBCH_A), crc16(pbch_a,PBCH_A),
((u16)pbch_a[PBCH_A>>3]<<8)+pbch_a[(PBCH_A>>3)+1]); ((uint16_t)pbch_a[PBCH_A>>3]<<8)+pbch_a[(PBCH_A>>3)+1]);
#endif #endif
crc = (crc16(pbch_a,PBCH_A)>>16) ^ crc = (crc16(pbch_a,PBCH_A)>>16) ^
(((u16)pbch_a[PBCH_A>>3]<<8)+pbch_a[(PBCH_A>>3)+1]); (((uint16_t)pbch_a[PBCH_A>>3]<<8)+pbch_a[(PBCH_A>>3)+1]);
if (crc == 0x0000) if (crc == 0x0000)
return(1); return(1);
...@@ -905,14 +905,14 @@ u16 rx_pbch(LTE_UE_COMMON *lte_ue_common_vars, ...@@ -905,14 +905,14 @@ u16 rx_pbch(LTE_UE_COMMON *lte_ue_common_vars,
} }
#ifdef PHY_ABSTRACTION #ifdef PHY_ABSTRACTION
u16 rx_pbch_emul(PHY_VARS_UE *phy_vars_ue, uint16_t rx_pbch_emul(PHY_VARS_UE *phy_vars_ue,
u8 eNB_id, uint8_t eNB_id,
u8 pbch_phase) { uint8_t pbch_phase) {
double bler=0.0, x=0.0; double bler=0.0, x=0.0;
double sinr=0.0; double sinr=0.0;
u16 nb_rb = phy_vars_ue->lte_frame_parms.N_RB_DL; uint16_t nb_rb = phy_vars_ue->lte_frame_parms.N_RB_DL;
s16 f; int16_t f;
// compute effective sinr // compute effective sinr
// TODO: adapt this to varible bandwidth // TODO: adapt this to varible bandwidth
......
This diff is collapsed.
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
//unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3]; //unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3];
u8 rv_table[4] = {0, 3, 1, 2}; uint8_t rv_table[4] = {0, 3, 1, 2};
uint8_t get_mi(LTE_DL_FRAME_PARMS *frame_parms,uint8_t subframe) { uint8_t get_mi(LTE_DL_FRAME_PARMS *frame_parms,uint8_t subframe) {
...@@ -125,7 +125,7 @@ unsigned char subframe2_ul_harq(LTE_DL_FRAME_PARMS *frame_parms,unsigned char su ...@@ -125,7 +125,7 @@ unsigned char subframe2_ul_harq(LTE_DL_FRAME_PARMS *frame_parms,unsigned char su
return(0); return(0);
} }
uint8_t phich_frame2_pusch_frame(LTE_DL_FRAME_PARMS *frame_parms,uint8_t frame,uint8_t subframe) { uint8_t phich_frame2_pusch_frame(LTE_DL_FRAME_PARMS *frame_parms,frame_t frame,uint8_t subframe) {
if (frame_parms->frame_type == FDD) { if (frame_parms->frame_type == FDD) {
return((subframe<4) ? (frame - 1) : frame); return((subframe<4) ? (frame - 1) : frame);
} }
...@@ -243,7 +243,7 @@ uint8_t phich_subframe2_pusch_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t s ...@@ -243,7 +243,7 @@ uint8_t phich_subframe2_pusch_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t s
return(0); return(0);
} }
int check_pcfich(LTE_DL_FRAME_PARMS *frame_parms,u16 reg) { int check_pcfich(LTE_DL_FRAME_PARMS *frame_parms,uint16_t reg) {
if ((reg == frame_parms->pcfich_reg[0]) || if ((reg == frame_parms->pcfich_reg[0]) ||
(reg == frame_parms->pcfich_reg[1]) || (reg == frame_parms->pcfich_reg[1]) ||
...@@ -260,8 +260,8 @@ void generate_phich_reg_mapping(LTE_DL_FRAME_PARMS *frame_parms) { ...@@ -260,8 +260,8 @@ void generate_phich_reg_mapping(LTE_DL_FRAME_PARMS *frame_parms) {
unsigned short n2 = n1; unsigned short n2 = n1;
unsigned short mprime = 0; unsigned short mprime = 0;
unsigned short Ngroup_PHICH; unsigned short Ngroup_PHICH;
// u16 *phich_reg = frame_parms->phich_reg; // uint16_t *phich_reg = frame_parms->phich_reg;
u16 *pcfich_reg = frame_parms->pcfich_reg; uint16_t *pcfich_reg = frame_parms->pcfich_reg;
// compute Ngroup_PHICH (see formula at beginning of Section 6.9 in 36-211 // compute Ngroup_PHICH (see formula at beginning of Section 6.9 in 36-211
Ngroup_PHICH = (frame_parms->phich_config_common.phich_resource*frame_parms->N_RB_DL)/48; Ngroup_PHICH = (frame_parms->phich_config_common.phich_resource*frame_parms->N_RB_DL)/48;
...@@ -987,7 +987,7 @@ void rx_phich(PHY_VARS_UE *phy_vars_ue, ...@@ -987,7 +987,7 @@ void rx_phich(PHY_VARS_UE *phy_vars_ue,
int16_t phich_d[24],*phich_d_ptr,HI16; int16_t phich_d[24],*phich_d_ptr,HI16;
// unsigned int i,aa; // unsigned int i,aa;
int8_t d[24],*dp; int8_t d[24],*dp;
u16 reg_offset; uint16_t reg_offset;
// scrambling // scrambling
uint32_t x1, x2, s=0; uint32_t x1, x2, s=0;
......
...@@ -42,13 +42,13 @@ ...@@ -42,13 +42,13 @@
void generate_pilots(PHY_VARS_eNB *phy_vars_eNB, void generate_pilots(PHY_VARS_eNB *phy_vars_eNB,
mod_sym_t **txdataF, mod_sym_t **txdataF,
s16 amp, int16_t amp,
u16 Ntti) { uint16_t Ntti) {
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms;
u32 tti,tti_offset,slot_offset,Nsymb,samples_per_symbol; uint32_t tti,tti_offset,slot_offset,Nsymb,samples_per_symbol;
u8 second_pilot; uint8_t second_pilot;
...@@ -169,13 +169,13 @@ void generate_pilots(PHY_VARS_eNB *phy_vars_eNB, ...@@ -169,13 +169,13 @@ void generate_pilots(PHY_VARS_eNB *phy_vars_eNB,
int generate_pilots_slot(PHY_VARS_eNB *phy_vars_eNB, int generate_pilots_slot(PHY_VARS_eNB *phy_vars_eNB,
mod_sym_t **txdataF, mod_sym_t **txdataF,
s16 amp, int16_t amp,
u16 slot, uint16_t slot,
int first_pilot_only) { int first_pilot_only) {
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms;
u32 slot_offset,Nsymb,samples_per_symbol; uint32_t slot_offset,Nsymb,samples_per_symbol;
u8 second_pilot; uint8_t second_pilot;
if (slot<0 || slot>= 20) { if (slot<0 || slot>= 20) {
msg("generate_pilots_slot: slot not in range (%d)\n",slot); msg("generate_pilots_slot: slot not in range (%d)\n",slot);
......
...@@ -43,11 +43,11 @@ ...@@ -43,11 +43,11 @@
int generate_mbsfn_pilot(PHY_VARS_eNB *phy_vars_eNB, int generate_mbsfn_pilot(PHY_VARS_eNB *phy_vars_eNB,
mod_sym_t **txdataF, mod_sym_t **txdataF,
s16 amp, int16_t amp,
u16 subframe) { uint16_t subframe) {
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms;
u32 subframe_offset,Nsymb,samples_per_symbol; uint32_t subframe_offset,Nsymb,samples_per_symbol;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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