fix nr_deinterleaving_ldpc() again, we are now too short in the buffer
This commit is contained in:
@@ -44,9 +44,9 @@
|
||||
#define _Assert_(cOND, aCTION, fORMAT, aRGS...) \
|
||||
do { \
|
||||
if (!(cOND)) { \
|
||||
fprintf(stderr, "\nAssertion ("#cOND") failed!\n" \
|
||||
fprintf(stderr, "\nAssertion (%s) failed!\n" \
|
||||
"In %s() %s:%d\n" fORMAT, \
|
||||
__FUNCTION__, __FILE__, __LINE__, ##aRGS); \
|
||||
#cOND, __FUNCTION__, __FILE__, __LINE__, ##aRGS); \
|
||||
aCTION; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
@@ -309,25 +309,28 @@ void nr_interleaving_ldpc(uint32_t E, uint8_t Qm, uint8_t *e,uint8_t *f)
|
||||
void nr_deinterleaving_ldpc(uint32_t E, uint8_t Qm, int16_t *e,int16_t *f)
|
||||
{
|
||||
|
||||
|
||||
switch(Qm) {
|
||||
case 2:
|
||||
{
|
||||
int16_t *e1=e+(E/2);
|
||||
int16_t *end=f+E-4;
|
||||
while( f<end ){
|
||||
*e++ = *f++;
|
||||
*e1++ = *f++;
|
||||
*e++ = *f++;
|
||||
*e1++ = *f++;
|
||||
}
|
||||
AssertFatal(E%4==0,"");
|
||||
int16_t *e1=e+(E/2);
|
||||
int16_t *end=f+E-3;
|
||||
while( f<end ){
|
||||
*e++ = *f++;
|
||||
*e1++ = *f++;
|
||||
*e++ = *f++;
|
||||
*e1++ = *f++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
AssertFatal(E%4==0,"");
|
||||
int16_t *e1=e+(E/4);
|
||||
int16_t *e2=e1+(E/4);
|
||||
int16_t *e3=e2+(E/4);
|
||||
int16_t *end=f+E-4;
|
||||
int16_t *end=f+E-3;
|
||||
while( f<end ){
|
||||
*e++ = *f++;
|
||||
*e1++ = *f++;
|
||||
@@ -338,12 +341,13 @@ void nr_deinterleaving_ldpc(uint32_t E, uint8_t Qm, int16_t *e,int16_t *f)
|
||||
break;
|
||||
case 6:
|
||||
{
|
||||
AssertFatal(E%6==0,"");
|
||||
int16_t *e1=e+(E/6);
|
||||
int16_t *e2=e1+(E/6);
|
||||
int16_t *e3=e2+(E/6);
|
||||
int16_t *e4=e3+(E/6);
|
||||
int16_t *e5=e4+(E/6);
|
||||
int16_t *end=f+E-6;
|
||||
int16_t *end=f+E-5;
|
||||
while( f<end ){
|
||||
*e++ = *f++;
|
||||
*e1++ = *f++;
|
||||
@@ -356,6 +360,7 @@ void nr_deinterleaving_ldpc(uint32_t E, uint8_t Qm, int16_t *e,int16_t *f)
|
||||
break;
|
||||
case 8:
|
||||
{
|
||||
AssertFatal(E%8==0,"zob");
|
||||
int16_t *e1=e+(E/8);
|
||||
int16_t *e2=e1+(E/8);
|
||||
int16_t *e3=e2+(E/8);
|
||||
@@ -363,7 +368,7 @@ void nr_deinterleaving_ldpc(uint32_t E, uint8_t Qm, int16_t *e,int16_t *f)
|
||||
int16_t *e5=e4+(E/8);
|
||||
int16_t *e6=e5+(E/8);
|
||||
int16_t *e7=e6+(E/8);
|
||||
int16_t *end=f+E-8;
|
||||
int16_t *end=f+E-7;
|
||||
while( f<end ){
|
||||
*e++ = *f++;
|
||||
*e1++ = *f++;
|
||||
|
||||
@@ -483,7 +483,7 @@ int main(int argc, char **argv)
|
||||
//unsigned char test_input[TBS / 8] __attribute__ ((aligned(16)));
|
||||
for (i = 0; i < TBS / 8; i++)
|
||||
test_input[i] = (unsigned char) rand();
|
||||
harq->pdu=test_input;
|
||||
dlsch->harq_process.pdu=test_input;
|
||||
//estimated_output = harq_process->b;
|
||||
|
||||
#ifdef DEBUG_NR_DLSCHSIM
|
||||
|
||||
Reference in New Issue
Block a user