fix warnings and race cond in polar codec

This commit is contained in:
Laurent THOMAS
2022-02-23 18:02:55 +01:00
parent 11441023db
commit 22d2e9a38f
10 changed files with 34 additions and 58 deletions
@@ -64,7 +64,7 @@ int8_t polar_decoder(double *input,
uint8_t aggregation_level
)
{
const t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
//Assumes no a priori knowledge.
uint8_t bit[polarParams->N][polarParams->n+1][2*listSize];
memset(bit,0,sizeof bit);
@@ -312,7 +312,7 @@ int8_t polar_decoder_dci(double *input,
int8_t messageType,
uint16_t messageLength,
uint8_t aggregation_level ) {
const t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
uint8_t bit[polarParams->N][polarParams->n+1][2*listSize];
memset(bit,0,sizeof bit);
@@ -610,7 +610,7 @@ uint32_t polar_decoder_int16(int16_t *input,
uint16_t messageLength,
uint8_t aggregation_level )
{
const t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
int16_t d_tilde[polarParams->N];// = malloc(sizeof(double) * polarParams->N);
nr_polar_rate_matching_int16(input, d_tilde, polarParams->rate_matching_pattern, polarParams->K, polarParams->N, polarParams->encoderLength);
@@ -346,9 +346,10 @@ static inline void nr_polar_deinterleaver(uint8_t *input,
}
void delete_decoder_tree(t_nrPolar_params *);
extern pthread_mutex_t PolarListMutex;
#define polarReturn \
pthread_mutex_lock(&PolarListMutex); \
currentPtr->busy=false; \
polarParams->busy=false; \
pthread_mutex_unlock(&PolarListMutex); \
return
@@ -46,7 +46,7 @@ void polar_encoder(uint32_t *in,
int8_t messageType,
uint16_t messageLength,
uint8_t aggregation_level) {
const t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
if (1) {//polarParams->idx == 0 || polarParams->idx == 1) { //PBCH or PDCCH
/*
uint64_t B = (((uint64_t)*in)&((((uint64_t)1)<<32)-1)) | (((uint64_t)crc24c((uint8_t*)in,polarParams->payloadBits)>>8)<<polarParams->payloadBits);
@@ -164,7 +164,7 @@ void polar_encoder_dci(uint32_t *in,
int8_t messageType,
uint16_t messageLength,
uint8_t aggregation_level) {
const t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
#ifdef DEBUG_POLAR_ENCODER_DCI
printf("[polar_encoder_dci] in: [0]->0x%08x \t [1]->0x%08x \t [2]->0x%08x \t [3]->0x%08x\n", in[0], in[1], in[2], in[3]);
@@ -433,7 +433,7 @@ void polar_encoder_fast(uint64_t *A,
uint16_t messageLength,
uint8_t aggregation_level) {
const t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
// AssertFatal(polarParams->K > 32, "K = %d < 33, is not supported yet\n",polarParams->K);
AssertFatal(polarParams->K < 129, "K = %d > 128, is not supported yet\n",polarParams->K);
AssertFatal(polarParams->payloadBits < 65, "payload bits = %d > 64, is not supported yet\n",polarParams->payloadBits);
+1 -1
View File
@@ -35,7 +35,7 @@
#define PolarKey ((messageType<<24)|(messageLength<<8)|aggregation_level)
static t_nrPolar_params * PolarList=NULL;
static pthread_mutex_t PolarListMutex=PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t PolarListMutex=PTHREAD_MUTEX_INITIALIZER;
static int intcmp(const void *p1,const void *p2) {
return(*(int16_t *)p1 > *(int16_t *)p2);
+1 -1
View File
@@ -147,7 +147,7 @@ void do_OFDM_mod_l(int32_t **txdataF, int32_t **txdata, uint16_t next_slot, LTE_
}
void DL_channel(RU_t *ru,PHY_VARS_UE *UE,uint subframe,int awgn_flag,double SNR, int tx_lev,int hold_channel,int abstx, int num_rounds, int trials, int round, channel_desc_t *eNB2UE[4],
double *s_re[NB_ANTENNAS_TX],double *s_im[[NB_ANTENNAS_TX],double *r_re[NB_ANTENNAS_RX],double *r_im[NB_ANTENNAS_RX],FILE *csv_fd) {
double *s_re[NB_ANTENNAS_TX],double *s_im[NB_ANTENNAS_TX],double *r_re[NB_ANTENNAS_RX],double *r_im[NB_ANTENNAS_RX],FILE *csv_fd) {
int i,u;
int aa,aarx,aatx;
double channelx,channely;