diff --git a/openair1/PHY/CODING/crc_byte.c b/openair1/PHY/CODING/crc_byte.c index 652e8466b7..0ad4ba62e7 100644 --- a/openair1/PHY/CODING/crc_byte.c +++ b/openair1/PHY/CODING/crc_byte.c @@ -259,7 +259,7 @@ unsigned int crcPayload(unsigned char * inptr, int bitlen, uint32_t* crc256Table int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type) { - uint32_t crc,oldcrc; + uint32_t crc=0,oldcrc=0; uint8_t crc_len,temp; switch (crc_type) { @@ -280,17 +280,15 @@ int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type) crc_len=3; } - oldcrc= *((unsigned int *)(&decoded_bytes[(n>>3)-crc_len])); + for (int i=0; i>3)-crc_len+i])<<((crc_len-1-i)<<3); switch (crc_type) { case CRC24_A: oldcrc&=0x00ffffff; - crc = crc24a(&decoded_bytes[F>>3], - n-24-F)>>8; - temp=((uint8_t *)&crc)[2]; - ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0]; - ((uint8_t *)&crc)[0] = temp; + crc = crc24a(decoded_bytes, + n-24)>>8; break; @@ -298,9 +296,6 @@ int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type) oldcrc&=0x00ffffff; crc = crc24b(decoded_bytes, n-24)>>8; - temp=((uint8_t *)&crc)[2]; - ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0]; - ((uint8_t *)&crc)[0] = temp; break; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c index 448c01c397..428dfc9e99 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c @@ -508,8 +508,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, llrProcBuf, p_procTime); - /* - if (check_crc(llrProcBuf,Kr,harq_process->F,crc_type)) { + if (check_crc(llrProcBuf,harq_process->B,harq_process->F,crc_type)) { printf("CRC OK\n"); ret = 2; } @@ -517,7 +516,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, printf("CRC NOK\n"); ret = 1+dlsch->max_ldpc_iterations; } - */ + nb_total_decod++; if (no_iteration_ldpc > dlsch->max_ldpc_iterations){ @@ -539,7 +538,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, #ifdef DEBUG_DLSCH_DECODING //printf("output decoder %d %d %d %d %d \n", harq_process->c[r][0], harq_process->c[r][1], harq_process->c[r][2],harq_process->c[r][3], harq_process->c[r][4]); - for (int k=0;k<32;k++) + for (int k=0;k>3;k++) printf("output decoder [%d] = 0x%02x \n", k, harq_process->c[r][k]); printf("no_iterations_ldpc %d (ret %d)\n",no_iteration_ldpc,ret); //write_output("dec_output.m","dec0",harq_process->c[0],Kr_bytes,1,4);