Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
sneltved
openairinterface5G
Commits
63143b87
Commit
63143b87
authored
Jan 28, 2019
by
frtabu
Browse files
Go on removing printf arguments warnings, add a suppression file to be used with cppcheck command
parent
875bdaf2
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
ci-scripts/cppcheck_suppressions.list
0 → 100644
View file @
63143b87
// suppress error about keysP not free, it is done by calling func */
memleak:common/utils/hashtable/obj_hashtable.c
// followings errors are in file not used in oai exec's included in CI
invalidPrintfArgType_sint:openair1/PHY/CODING/TESTBENCH/ltetest.c
memleak:openair1/PHY/CODING/TESTBENCH/ltetest.c
invalidPrintfArgType_sint:openair1/PHY/CODING/TESTBENCH/pdcch_test.c
common/utils/backtrace.c
View file @
63143b87
...
...
@@ -31,18 +31,18 @@
#include "backtrace.h"
/* Obtain a backtrace and print it to stdout. */
void
display_backtrace
(
void
)
{
void
display_backtrace
(
void
)
{
void
*
array
[
10
];
size_t
size
;
char
**
strings
;
size_t
i
;
char
*
test
=
getenv
(
"NO_BACKTRACE"
);
if
(
test
!=
0
)
*
((
int
*
)
0
)
=
0
;
char
*
test
=
getenv
(
"NO_BACKTRACE"
);
if
(
test
!=
0
)
*
((
int
*
)
0
)
=
0
;
size
=
backtrace
(
array
,
10
);
strings
=
backtrace_symbols
(
array
,
size
);
printf
(
"Obtained %zd stack frames.
\n
"
,
size
);
printf
(
"Obtained %u stack frames.
\n
"
,
(
unsigned
int
)
size
);
for
(
i
=
0
;
i
<
size
;
i
++
)
printf
(
"%s
\n
"
,
strings
[
i
]);
...
...
@@ -50,8 +50,7 @@ void display_backtrace(void)
free
(
strings
);
}
void
backtrace_handle_signal
(
siginfo_t
*
info
)
{
void
backtrace_handle_signal
(
siginfo_t
*
info
)
{
display_backtrace
();
//exit(EXIT_FAILURE);
}
common/utils/hashtable/obj_hashtable.c
View file @
63143b87
...
...
@@ -2,9 +2,9 @@
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
...
...
@@ -30,13 +30,12 @@
* This is a simple/naive hash function which adds the key's ASCII char values. It will probably generate lots of collisions on large hash tables.
*/
static
hash_size_t
def_hashfunc
(
const
void
*
keyP
,
int
key_sizeP
)
{
hash_size_t
hash
=
0
;
static
hash_size_t
def_hashfunc
(
const
void
*
keyP
,
int
key_sizeP
)
{
hash_size_t
hash
=
0
;
while
(
key_sizeP
)
hash
^=
((
unsigned
char
*
)
keyP
)[
key_sizeP
--
];
while
(
key_sizeP
)
hash
^=
((
unsigned
char
*
)
keyP
)[
key_sizeP
--
];
return
hash
;
return
hash
;
}
//-------------------------------------------------------------------------------------------------------------------------------
...
...
@@ -46,201 +45,221 @@ static hash_size_t def_hashfunc(const void *keyP, int key_sizeP)
* The user can also specify a hash function. If the hashfunc argument is NULL, a default hash function is used.
* If an error occurred, NULL is returned. All other values in the returned obj_hash_table_t pointer should be released with hashtable_destroy().
*/
obj_hash_table_t
*
obj_hashtable_create
(
hash_size_t
sizeP
,
hash_size_t
(
*
hashfuncP
)(
const
void
*
,
int
),
void
(
*
freekeyfuncP
)(
void
*
),
void
(
*
freedatafuncP
)(
void
*
))
{
obj_hash_table_t
*
hashtbl
;
obj_hash_table_t
*
obj_hashtable_create
(
hash_size_t
sizeP
,
hash_size_t
(
*
hashfuncP
)(
const
void
*
,
int
),
void
(
*
freekeyfuncP
)(
void
*
),
void
(
*
freedatafuncP
)(
void
*
))
{
obj_hash_table_t
*
hashtbl
;
if
(
!
(
hashtbl
=
malloc
(
sizeof
(
obj_hash_table_t
))))
return
NULL
;
if
(
!
(
hashtbl
=
malloc
(
sizeof
(
obj_hash_table_t
))))
return
NULL
;
if
(
!
(
hashtbl
->
nodes
=
calloc
(
sizeP
,
sizeof
(
obj_hash_node_t
*
))))
{
free
(
hashtbl
);
return
NULL
;
}
if
(
!
(
hashtbl
->
nodes
=
calloc
(
sizeP
,
sizeof
(
obj_hash_node_t
*
))))
{
free
(
hashtbl
);
return
NULL
;
}
hashtbl
->
size
=
sizeP
;
hashtbl
->
size
=
sizeP
;
if
(
hashfuncP
)
hashtbl
->
hashfunc
=
hashfuncP
;
else
hashtbl
->
hashfunc
=
def_hashfunc
;
if
(
hashfuncP
)
hashtbl
->
hashfunc
=
hashfuncP
;
else
hashtbl
->
hashfunc
=
def_hashfunc
;
if
(
freekeyfuncP
)
hashtbl
->
freekeyfunc
=
freekeyfuncP
;
else
hashtbl
->
freekeyfunc
=
free
;
if
(
freekeyfuncP
)
hashtbl
->
freekeyfunc
=
freekeyfuncP
;
else
hashtbl
->
freekeyfunc
=
free
;
if
(
freedatafuncP
)
hashtbl
->
freedatafunc
=
freedatafuncP
;
else
hashtbl
->
freedatafunc
=
free
;
if
(
freedatafuncP
)
hashtbl
->
freedatafunc
=
freedatafuncP
;
else
hashtbl
->
freedatafunc
=
free
;
return
hashtbl
;
return
hashtbl
;
}
//-------------------------------------------------------------------------------------------------------------------------------
/*
* Cleanup
* The hashtable_destroy() walks through the linked lists for each possible hash value, and releases the elements. It also releases the nodes array and the obj_hash_table_t.
*/
hashtable_rc_t
obj_hashtable_destroy
(
obj_hash_table_t
*
hashtblP
)
{
hash_size_t
n
;
obj_hash_node_t
*
node
,
*
oldnode
;
hashtable_rc_t
obj_hashtable_destroy
(
obj_hash_table_t
*
hashtblP
)
{
hash_size_t
n
;
obj_hash_node_t
*
node
,
*
oldnode
;
for
(
n
=
0
;
n
<
hashtblP
->
size
;
++
n
)
{
node
=
hashtblP
->
nodes
[
n
];
while
(
node
)
{
oldnode
=
node
;
node
=
node
->
next
;
hashtblP
->
freekeyfunc
(
old
node
->
key
)
;
hashtblP
->
free
data
func
(
oldnode
->
data
);
free
(
oldnode
);
}
for
(
n
=
0
;
n
<
hashtblP
->
size
;
++
n
)
{
node
=
hashtblP
->
nodes
[
n
];
while
(
node
)
{
old
node
=
node
;
node
=
node
->
next
;
hashtblP
->
free
key
func
(
oldnode
->
key
);
hashtblP
->
freedatafunc
(
oldnode
->
data
);
free
(
oldnode
);
}
free
(
hashtblP
->
nodes
);
free
(
hashtblP
);
return
HASH_TABLE_OK
;
}
free
(
hashtblP
->
nodes
);
free
(
hashtblP
);
return
HASH_TABLE_OK
;
}
//-------------------------------------------------------------------------------------------------------------------------------
hashtable_rc_t
obj_hashtable_is_key_exists
(
obj_hash_table_t
*
hashtblP
,
void
*
keyP
,
int
key_sizeP
)
hashtable_rc_t
obj_hashtable_is_key_exists
(
obj_hash_table_t
*
hashtblP
,
void
*
keyP
,
int
key_sizeP
)
//-------------------------------------------------------------------------------------------------------------------------------
{
obj_hash_node_t
*
node
;
hash_size_t
hash
;
obj_hash_node_t
*
node
;
hash_size_t
hash
;
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
]
;
while
(
node
)
{
if
(
node
->
key
==
keyP
)
{
return
HASH_TABLE_OK
;
}
else
if
(
node
->
key
_size
==
key
_size
P
)
{
if
(
memcmp
(
node
->
key
,
keyP
,
key_sizeP
)
==
0
)
{
return
HASH_TABLE_OK
;
}
}
node
=
node
->
next
;
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
];
while
(
node
)
{
if
(
node
->
key
==
keyP
)
{
return
HASH_TABLE_OK
;
}
else
if
(
node
->
key_size
==
key_sizeP
)
{
if
(
memcmp
(
node
->
key
,
keyP
,
key_sizeP
)
==
0
)
{
return
HASH_TABLE_OK
;
}
}
return
HASH_TABLE_KEY_NOT_EXISTS
;
node
=
node
->
next
;
}
return
HASH_TABLE_KEY_NOT_EXISTS
;
}
//-------------------------------------------------------------------------------------------------------------------------------
/*
* Adding a new element
* To make sure the hash value is not bigger than size, the result of the user provided hash function is used modulo size.
*/
hashtable_rc_t
obj_hashtable_insert
(
obj_hash_table_t
*
hashtblP
,
void
*
keyP
,
int
key_sizeP
,
void
*
dataP
)
{
obj_hash_node_t
*
node
;
hash_size_t
hash
;
hashtable_rc_t
obj_hashtable_insert
(
obj_hash_table_t
*
hashtblP
,
void
*
keyP
,
int
key_sizeP
,
void
*
dataP
)
{
obj_hash_node_t
*
node
;
hash_size_t
hash
;
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
];
while
(
node
)
{
if
(
node
->
key
==
keyP
)
{
if
(
node
->
data
)
{
hashtblP
->
freedatafunc
(
node
->
data
);
}
node
->
data
=
dataP
;
// waste of memory here (keyP is lost) we should free it now
return
HASH_TABLE_INSERT_OVERWRITTEN_DATA
;
}
node
=
node
->
next
;
}
if
(
!
(
node
=
malloc
(
sizeof
(
obj_hash_node_t
))))
return
-
1
;
node
->
key
=
keyP
;
node
->
data
=
dataP
;
if
(
hashtblP
->
nodes
[
hash
])
{
node
->
next
=
hashtblP
->
nodes
[
hash
];
}
else
{
node
->
next
=
NULL
;
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
];
while
(
node
)
{
if
(
node
->
key
==
keyP
)
{
if
(
node
->
data
)
{
hashtblP
->
freedatafunc
(
node
->
data
);
}
node
->
data
=
dataP
;
// waste of memory here (keyP is lost) we should free it now
return
HASH_TABLE_INSERT_OVERWRITTEN_DATA
;
}
hashtblP
->
nodes
[
hash
]
=
node
;
return
HASH_TABLE_OK
;
node
=
node
->
next
;
}
if
(
!
(
node
=
malloc
(
sizeof
(
obj_hash_node_t
))))
return
-
1
;
node
->
key
=
keyP
;
node
->
data
=
dataP
;
if
(
hashtblP
->
nodes
[
hash
])
{
node
->
next
=
hashtblP
->
nodes
[
hash
];
}
else
{
node
->
next
=
NULL
;
}
hashtblP
->
nodes
[
hash
]
=
node
;
return
HASH_TABLE_OK
;
}
//-------------------------------------------------------------------------------------------------------------------------------
/*
* To remove an element from the hash table, we just search for it in the linked list for that hash value,
* and remove it if it is found. If it was not found, it is an error and -1 is returned.
*/
hashtable_rc_t
obj_hashtable_remove
(
obj_hash_table_t
*
hashtblP
,
const
void
*
keyP
,
int
key_sizeP
)
{
obj_hash_node_t
*
node
,
*
prevnode
=
NULL
;
hash_size_t
hash
;
hashtable_rc_t
obj_hashtable_remove
(
obj_hash_table_t
*
hashtblP
,
const
void
*
keyP
,
int
key_sizeP
)
{
obj_hash_node_t
*
node
,
*
prevnode
=
NULL
;
hash_size_t
hash
;
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
];
while
(
node
)
{
if
((
node
->
key
==
keyP
)
||
((
node
->
key_size
==
key_sizeP
)
&&
(
memcmp
(
node
->
key
,
keyP
,
key_sizeP
)
==
0
))){
if
(
prevnode
)
{
prevnode
->
next
=
node
->
next
;
}
else
{
hashtblP
->
nodes
[
hash
]
=
node
->
next
;
}
hashtblP
->
freekeyfunc
(
node
->
key
);
hashtblP
->
freedatafunc
(
node
->
data
);
free
(
node
);
return
HASH_TABLE_OK
;
}
prevnode
=
node
;
node
=
node
->
next
;
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
];
while
(
node
)
{
if
((
node
->
key
==
keyP
)
||
((
node
->
key_size
==
key_sizeP
)
&&
(
memcmp
(
node
->
key
,
keyP
,
key_sizeP
)
==
0
)))
{
if
(
prevnode
)
{
prevnode
->
next
=
node
->
next
;
}
else
{
hashtblP
->
nodes
[
hash
]
=
node
->
next
;
}
hashtblP
->
freekeyfunc
(
node
->
key
);
hashtblP
->
freedatafunc
(
node
->
data
);
free
(
node
);
return
HASH_TABLE_OK
;
}
return
HASH_TABLE_KEY_NOT_EXISTS
;
prevnode
=
node
;
node
=
node
->
next
;
}
return
HASH_TABLE_KEY_NOT_EXISTS
;
}
//-------------------------------------------------------------------------------------------------------------------------------
/*
* Searching for an element is easy. We just search through the linked list for the corresponding hash value.
* NULL is returned if we didn't find it.
*/
hashtable_rc_t
obj_hashtable_get
(
obj_hash_table_t
*
hashtblP
,
const
void
*
keyP
,
int
key_sizeP
,
void
**
dataP
)
{
obj_hash_node_t
*
node
;
hash_size_t
hash
;
hashtable_rc_t
obj_hashtable_get
(
obj_hash_table_t
*
hashtblP
,
const
void
*
keyP
,
int
key_sizeP
,
void
**
dataP
)
{
obj_hash_node_t
*
node
;
hash_size_t
hash
;
if
(
hashtblP
==
NULL
)
{
*
dataP
=
NULL
;
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
];
while
(
node
)
{
if
(
node
->
key
==
keyP
)
{
*
dataP
=
node
->
data
;
return
HASH_TABLE_OK
;
}
else
if
(
node
->
key_size
==
key_sizeP
)
{
if
(
memcmp
(
node
->
key
,
keyP
,
key_sizeP
)
==
0
)
{
*
dataP
=
node
->
data
;
return
HASH_TABLE_OK
;
}
}
node
=
node
->
next
;
}
if
(
hashtblP
==
NULL
)
{
*
dataP
=
NULL
;
return
HASH_TABLE_KEY_NOT_EXISTS
;
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
hash
=
hashtblP
->
hashfunc
(
keyP
,
key_sizeP
)
%
hashtblP
->
size
;
node
=
hashtblP
->
nodes
[
hash
];
while
(
node
)
{
if
(
node
->
key
==
keyP
)
{
*
dataP
=
node
->
data
;
return
HASH_TABLE_OK
;
}
else
if
(
node
->
key_size
==
key_sizeP
)
{
if
(
memcmp
(
node
->
key
,
keyP
,
key_sizeP
)
==
0
)
{
*
dataP
=
node
->
data
;
return
HASH_TABLE_OK
;
}
}
node
=
node
->
next
;
}
*
dataP
=
NULL
;
return
HASH_TABLE_KEY_NOT_EXISTS
;
}
//-------------------------------------------------------------------------------------------------------------------------------
/*
* Function to return all keys of an object hash table
*/
hashtable_rc_t
obj_hashtable_get_keys
(
obj_hash_table_t
*
hashtblP
,
void
**
keysP
,
unsigned
int
*
sizeP
)
{
size_t
n
=
0
;
obj_hash_node_t
*
node
=
NULL
;
obj_hash_node_t
*
next
=
NULL
;
*
sizeP
=
0
;
keysP
=
calloc
(
hashtblP
->
num_elements
,
sizeof
(
void
*
));
if
(
keysP
)
{
for
(
n
=
0
;
n
<
hashtblP
->
size
;
++
n
)
{
for
(
node
=
hashtblP
->
nodes
[
n
];
node
;
node
=
next
)
{
keysP
[
*
sizeP
++
]
=
node
->
key
;
next
=
node
->
next
;
}
}
return
HASH_TABLE_OK
;
hashtable_rc_t
obj_hashtable_get_keys
(
obj_hash_table_t
*
hashtblP
,
void
**
keysP
,
unsigned
int
*
sizeP
)
{
size_t
n
=
0
;
obj_hash_node_t
*
node
=
NULL
;
obj_hash_node_t
*
next
=
NULL
;
*
sizeP
=
0
;
keysP
=
calloc
(
hashtblP
->
num_elements
,
sizeof
(
void
*
));
if
(
keysP
)
{
for
(
n
=
0
;
n
<
hashtblP
->
size
;
++
n
)
{
for
(
node
=
hashtblP
->
nodes
[
n
];
node
;
node
=
next
)
{
keysP
[
*
sizeP
++
]
=
node
->
key
;
next
=
node
->
next
;
}
}
return
HASH_TABLE_SYSTEM_ERROR
;
// cppcheck-suppress memleak
return
HASH_TABLE_OK
;
}
return
HASH_TABLE_SYSTEM_ERROR
;
}
//-------------------------------------------------------------------------------------------------------------------------------
/*
...
...
@@ -253,34 +272,32 @@ hashtable_rc_t obj_hashtable_get_keys(obj_hash_table_t *hashtblP, void ** keysP,
* This allows us to reuse hashtable_insert() and hashtable_remove(), when moving the elements to the new table.
* After that, we can just free the old table and copy the elements from newtbl to hashtbl.
*/
hashtable_rc_t
obj_hashtable_resize
(
obj_hash_table_t
*
hashtblP
,
hash_size_t
sizeP
)
{
obj_hash_table_t
newtbl
;
hash_size_t
n
;
obj_hash_node_t
*
node
,
*
next
;
hashtable_rc_t
obj_hashtable_resize
(
obj_hash_table_t
*
hashtblP
,
hash_size_t
sizeP
)
{
obj_hash_table_t
newtbl
;
hash_size_t
n
;
obj_hash_node_t
*
node
,
*
next
;
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
if
(
hashtblP
==
NULL
)
{
return
HASH_TABLE_BAD_PARAMETER_HASHTABLE
;
}
newtbl
.
size
=
sizeP
;
newtbl
.
hashfunc
=
hashtblP
->
hashfunc
;
newtbl
.
size
=
sizeP
;
newtbl
.
hashfunc
=
hashtblP
->
hashfunc
;
if
(
!
(
newtbl
.
nodes
=
calloc
(
sizeP
,
sizeof
(
obj_hash_node_t
*
))))
return
HASH_TABLE_SYSTEM_ERROR
;
if
(
!
(
newtbl
.
nodes
=
calloc
(
sizeP
,
sizeof
(
obj_hash_node_t
*
))))
return
HASH_TABLE_SYSTEM_ERROR
;
for
(
n
=
0
;
n
<
hashtblP
->
size
;
++
n
)
{
for
(
node
=
hashtblP
->
nodes
[
n
];
node
;
node
=
next
)
{
next
=
node
->
next
;
obj_hashtable_insert
(
&
newtbl
,
node
->
key
,
node
->
key_size
,
node
->
data
);
obj_hashtable_remove
(
hashtblP
,
node
->
key
,
node
->
key_size
);
}
for
(
n
=
0
;
n
<
hashtblP
->
size
;
++
n
)
{
for
(
node
=
hashtblP
->
nodes
[
n
];
node
;
node
=
next
)
{
next
=
node
->
next
;
obj_hashtable_insert
(
&
newtbl
,
node
->
key
,
node
->
key_size
,
node
->
data
);
obj_hashtable_remove
(
hashtblP
,
node
->
key
,
node
->
key_size
);
}
}
free
(
hashtblP
->
nodes
);
hashtblP
->
size
=
newtbl
.
size
;
hashtblP
->
nodes
=
newtbl
.
nodes
;
return
HASH_TABLE_OK
;
free
(
hashtblP
->
nodes
);
hashtblP
->
size
=
newtbl
.
size
;
hashtblP
->
nodes
=
newtbl
.
nodes
;
return
HASH_TABLE_OK
;
}
...
...
openair1/PHY/CODING/ccoding_byte.c
View file @
63143b87
...
...
@@ -130,7 +130,7 @@ ccodedot11_encode (unsigned int numbytes,
*
outPtr
++
=
(
out
>>
1
)
&
1
;
#ifdef DEBUG_CCODE
printf
(
"%
d
: %u -> %d (%u)
\n
"
,
dummy
,
state
,
out
,
ccodedot11_table
[
state
]);
printf
(
"%
u
: %u -> %d (%u)
\n
"
,
dummy
,
state
,
out
,
ccodedot11_table
[
state
]);
dummy
+=
2
;
#endif //DEBUG_CCODE
bit_index
=
(
bit_index
==
0
)
?
1
:
0
;
...
...
openair1/PHY/CODING/lte_rate_matching.c
View file @
63143b87
...
...
@@ -236,7 +236,7 @@ void sub_block_deinterleaving_cc(uint32_t D,int8_t *d,int8_t *w) {
ND
=
Kpi
-
D
;
#ifdef RM_DEBUG2
printf
(
"sub_block_interleaving_cc : D = %d (%d), d %p, w %p
\n
"
,
D
,
D
*
3
,
d
,
w
);
printf
(
"RCC = %d, Kpi=%d, ND=%ld
\n
"
,
RCC
,
Kpi
,
ND
);
printf
(
"RCC = %d, Kpi=%d, ND=%ld
\n
"
,
RCC
,
Kpi
,
(
long
)
ND
);
#endif
ND3
=
ND
*
3
;
k
=
0
;
...
...
@@ -253,7 +253,8 @@ void sub_block_deinterleaving_cc(uint32_t D,int8_t *d,int8_t *w) {
d
[
index3
-
ND3
+
1
]
=
w
[
Kpi
+
k
];
d
[
index3
-
ND3
+
2
]
=
w
[(
Kpi
<<
1
)
+
k
];
#ifdef RM_DEBUG2
printf
(
"row %d, index %d k %d index3-ND3 %ld w(%d,%d,%d)
\n
"
,
row
,
index
,
k
,
index3
-
ND3
,
w
[
k
],
w
[
Kpi
+
k
],
w
[(
Kpi
<<
1
)
+
k
]);
printf
(
"row %d, index %d k %d index3-ND3 %ld w(%d,%d,%d)
\n
"
,
row
,
index
,
k
,(
long
)(
index3
-
ND3
),
w
[
k
],
w
[
Kpi
+
k
],
w
[(
Kpi
<<
1
)
+
k
]);
#endif
index3
+=
96
;
index
+=
32
;
...
...
@@ -453,7 +454,6 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
int
threed
=
0
;
uint32_t
nulled
=
0
;
static
unsigned
char
*
counter_buffer
[
MAX_NUM_DLSCH_SEGMENTS
][
4
];
FILE
*
counter_fd
;
char
fname
[
512
];
#endif
...
...
@@ -476,7 +476,6 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
}
else
if
(
rvidx
==
3
)
{
sprintf
(
fname
,
"mcs%d_rate_matching_RB_%d.txt"
,
m
,
nb_rb
);
// sprintf(fname,"mcs0_rate_matching_RB_6.txt");
counter_fd
=
fopen
(
fname
,
"w"
);
}
#endif
...
...
openair1/PHY/CODING/lte_segmentation.c
View file @
63143b87
...
...
@@ -124,8 +124,8 @@ int lte_segmentation(unsigned char *input_buffer,
Bprime
,
*
Cplus
,
*
Kplus
,
*
Cminus
,
*
Kminus
);
*
F
=
((
*
Cplus
)
*
(
*
Kplus
)
+
(
*
Cminus
)
*
(
*
Kminus
)
-
(
Bprime
));
#ifdef DEBUG_SEGMENTATION
printf
(
"C %u, Cplus %u, Cminus %u, Kplus %u, Kminus %u, Bprime_bytes %u, Bprime %u, F %u
\n
"
,
*
C
,
*
Cplus
,
*
Cminus
,
*
Kplus
,
*
Kminus
,
Bprime
>>
3
,
Bprime
,
*
F
);
#endif
printf
(
"C %u, Cplus %u, Cminus %u, Kplus %u, Kminus %u, Bprime_bytes %u, Bprime %u, F %u
\n
"
,
*
C
,
*
Cplus
,
*
Cminus
,
*
Kplus
,
*
Kminus
,
Bprime
>>
3
,
Bprime
,
*
F
);
if
((
input_buffer
)
&&
(
output_buffers
))
{
for
(
k
=
0
;
k
<*
F
>>
3
;
k
++
)
{
...
...
openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
View file @
63143b87
...
...
@@ -35,30 +35,22 @@
int
lte_dl_mbsfn
(
PHY_VARS_eNB
*
eNB
,
int32_t
*
output
,
short
amp
,
int
subframe
,
unsigned
char
l
)
{
unsigned
char
l
)
{
unsigned
int
mprime
,
mprime_dword
,
mprime_qpsk_symb
,
m
;
unsigned
short
k
=
0
,
a
;
int32_t
qpsk
[
4
];
a
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
;
((
short
*
)
&
qpsk
[
0
])[
0
]
=
a
;
((
short
*
)
&
qpsk
[
0
])[
1
]
=
a
;
((
short
*
)
&
qpsk
[
1
])[
0
]
=
-
a
;
((
short
*
)
&
qpsk
[
1
])[
1
]
=
a
;
((
short
*
)
&
qpsk
[
2
])[
0
]
=
a
;
((
short
*
)
&
qpsk
[
2
])[
1
]
=
-
a
;
((
short
*
)
&
qpsk
[
3
])[
0
]
=
-
a
;
((
short
*
)
&
qpsk
[
3
])[
1
]
=
-
a
;
mprime
=
3
*
(
110
-
eNB
->
frame_parms
.
N_RB_DL
);
for
(
m
=
0
;
m
<
eNB
->
frame_parms
.
N_RB_DL
*
6
;
m
++
)
{
if
((
l
==
0
)
||
(
l
==
2
))
k
=
m
<<
1
;
else
if
(
l
==
1
)
...
...
@@ -69,7 +61,6 @@ int lte_dl_mbsfn(PHY_VARS_eNB *eNB, int32_t *output,
}
k
+=
eNB
->
frame_parms
.
first_carrier_offset
;
mprime_dword
=
mprime
>>
4
;
mprime_qpsk_symb
=
mprime
&
0xf
;
...
...
@@ -80,22 +71,18 @@ int lte_dl_mbsfn(PHY_VARS_eNB *eNB, int32_t *output,
output
[
k
]
=
qpsk
[(
eNB
->
lte_gold_mbsfn_table
[
subframe
][
l
][
mprime_dword
]
>>
(
2
*
mprime_qpsk_symb
))
&
3
];