Merge branch 'integration_2024_w16' into 'develop'
Integration `2024.w16` See merge request oai/openairinterface5g!2689 * !2680 CI: Modification of log collection in UndeployObject() * !2681 remove a useless copy and specific buffer for all UE UL payload * !2685 Clang: make executable run, fix clang warnings, fix memsan warnings * !2690 Remove hardcoding of 5G-S-TMSI on nrUE
This commit is contained in:
+8
-3
@@ -158,11 +158,16 @@ endif()
|
|||||||
# add autotools definitions that were maybe used!
|
# add autotools definitions that were maybe used!
|
||||||
add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP")
|
add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP")
|
||||||
|
|
||||||
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing")
|
# we need -rdynamic to incorporate all symbols in shared objects, see man page
|
||||||
|
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing -rdynamic")
|
||||||
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
|
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
|
||||||
# also, we need -rdynamic to incorporate all symbols in shared objects, again, see man page
|
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat -rdynamic")
|
set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat")
|
||||||
|
endif()
|
||||||
|
# clang: suppress complaints about unused command line argument (-rdynamic only
|
||||||
|
# used during linking)
|
||||||
|
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
set(commonOpts "${commonOpts} -Wno-unused-command-line-argument")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS
|
set(CMAKE_C_FLAGS
|
||||||
|
|||||||
@@ -1021,18 +1021,18 @@ class Containerize():
|
|||||||
for s in allServices:
|
for s in allServices:
|
||||||
# outputs the hash if the container is running
|
# outputs the hash if the container is running
|
||||||
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
|
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
|
||||||
running = ret.stdout.splitlines()
|
c = ret.stdout
|
||||||
logging.debug(f'running services: {running}')
|
logging.debug(f'running service {s} with container id {c}')
|
||||||
if ret.stdout != "" and ret.returncode == 0: # something is running for that service
|
if ret.stdout != "" and ret.returncode == 0: # something is running for that service
|
||||||
services.append(s)
|
services.append((s, c))
|
||||||
logging.info(f'stopping services {services}')
|
logging.info(f'stopping services {[s for s, _ in services]}')
|
||||||
|
|
||||||
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
|
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
|
||||||
copyin_res = True
|
copyin_res = True
|
||||||
for svcName in services:
|
for service_name, container_id in services:
|
||||||
# head -n -1 suppresses the final "X exited with status code Y"
|
# head -n -1 suppresses the final "X exited with status code Y"
|
||||||
filename = f'{svcName}-{HTML.testCase_id}.log'
|
filename = f'{service_name}-{HTML.testCase_id}.log'
|
||||||
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml logs --no-log-prefix -- {svcName} &> {lSourcePath}/cmake_targets/log/{filename}')
|
mySSH.run(f'docker logs {container_id} &> {lSourcePath}/cmake_targets/log/{filename}')
|
||||||
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}') and copyin_res
|
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}') and copyin_res
|
||||||
|
|
||||||
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v')
|
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v')
|
||||||
@@ -1043,7 +1043,7 @@ class Containerize():
|
|||||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
|
||||||
self.exitStatus = 1
|
self.exitStatus = 1
|
||||||
# use function for UE log analysis, when oai-nr-ue container is used
|
# use function for UE log analysis, when oai-nr-ue container is used
|
||||||
elif 'oai-nr-ue' in services or 'lte_ue0' in services:
|
elif any(service_name == 'oai-nr-ue' or service_name == 'lte_ue0' for service_name, _ in services):
|
||||||
self.exitStatus == 0
|
self.exitStatus == 0
|
||||||
logging.debug(f'Analyzing UE logfile {filename}')
|
logging.debug(f'Analyzing UE logfile {filename}')
|
||||||
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN)
|
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN)
|
||||||
@@ -1053,12 +1053,12 @@ class Containerize():
|
|||||||
else:
|
else:
|
||||||
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
else:
|
else:
|
||||||
for svcName in services:
|
for service_name, _ in services:
|
||||||
if svcName == 'nv-cubb':
|
if service_name == 'nv-cubb':
|
||||||
msg = 'Undeploy PNF/Nvidia CUBB'
|
msg = 'Undeploy PNF/Nvidia CUBB'
|
||||||
HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
else:
|
else:
|
||||||
filename = f'{svcName}-{HTML.testCase_id}.log'
|
filename = f'{service_name}-{HTML.testCase_id}.log'
|
||||||
logging.debug(f'\u001B[1m Analyzing logfile {filename}\u001B[0m')
|
logging.debug(f'\u001B[1m Analyzing logfile {filename}\u001B[0m')
|
||||||
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
|
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
|
||||||
if (logStatus < 0):
|
if (logStatus < 0):
|
||||||
|
|||||||
@@ -418,8 +418,6 @@ function main() {
|
|||||||
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_UNDEFINED=True"
|
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_UNDEFINED=True"
|
||||||
shift;;
|
shift;;
|
||||||
--sanitize-memory | -fsanitize=memory)
|
--sanitize-memory | -fsanitize=memory)
|
||||||
echo_warning "Note: memory sanitizer\n* requires clang (tested: v17)\n* is incompatible with address/undefined behavior sanitizer\n* requires cmake_targets/tools/memsan.patch"
|
|
||||||
sleep 2
|
|
||||||
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_MEMORY=ON -DSANITIZE_ADDRESS=OFF -DSANITIZE_UNDEFINED=OFF"
|
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_MEMORY=ON -DSANITIZE_ADDRESS=OFF -DSANITIZE_UNDEFINED=OFF"
|
||||||
shift;;
|
shift;;
|
||||||
--trace-asn1c-enc-dec)
|
--trace-asn1c-enc-dec)
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
commit bf7f0c4f0f1bfce586667b50050640b67a7a747a
|
|
||||||
Author: Robert Schmidt <robert.schmidt@openairinterface.org>
|
|
||||||
Date: Wed Jun 7 18:24:50 2023 +0200
|
|
||||||
|
|
||||||
Fix dlopen() linker errors in dfts, ldpc, ldpc_parityCheck, and params_libconfig
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index c29105d503..3b9e7d1246 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -508,7 +508,7 @@ add_library(CONFIG_LIB
|
|
||||||
)
|
|
||||||
target_link_libraries(CONFIG_LIB PRIVATE dl UTIL)
|
|
||||||
add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
|
|
||||||
-target_link_libraries(params_libconfig config)
|
|
||||||
+target_link_libraries(params_libconfig config CONFIG_LIB minimal_lib)
|
|
||||||
# shared library loader
|
|
||||||
set (SHLIB_LOADER_SOURCES
|
|
||||||
${OPENAIR_DIR}/common/utils/load_module_shlib.c
|
|
||||||
@@ -1018,16 +1018,19 @@ if (ENABLE_LDPC_CUDA)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
-add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
|
||||||
+add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c)
|
|
||||||
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)
|
|
||||||
+target_link_libraries(ldpc PRIVATE UTIL)
|
|
||||||
|
|
||||||
add_library(ldpc_parityCheck MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
|
||||||
target_compile_definitions(ldpc_parityCheck PUBLIC NR_LDPC_ENABLE_PARITY_CHECK)
|
|
||||||
target_link_libraries(ldpc_parityCheck PRIVATE ldpc_gen_HEADERS)
|
|
||||||
+target_link_libraries(ldpc_parityCheck PRIVATE UTIL minimal_lib)
|
|
||||||
|
|
||||||
add_library(coding MODULE ${PHY_TURBOSRC} )
|
|
||||||
|
|
||||||
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c )
|
|
||||||
+target_link_libraries(dfts PRIVATE minimal_lib)
|
|
||||||
|
|
||||||
|
|
||||||
set(PHY_SRC_COMMON
|
|
||||||
diff --git a/common/utils/minimal_stub.c b/common/utils/minimal_stub.c
|
|
||||||
index be9c1b399d..7ad0df4d56 100644
|
|
||||||
--- a/common/utils/minimal_stub.c
|
|
||||||
+++ b/common/utils/minimal_stub.c
|
|
||||||
@@ -1,6 +1,8 @@
|
|
||||||
+#include <stdlib.h>
|
|
||||||
#ifndef T_TRACER
|
|
||||||
int T_stdout;
|
|
||||||
#endif
|
|
||||||
+int oai_exit = 0;
|
|
||||||
|
|
||||||
void exit_function(const char *file, const char *function, const int line, const char *s, const int assert)
|
|
||||||
{
|
|
||||||
@@ -322,19 +322,16 @@ int config_libconfig_set(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
|
|||||||
int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions, int numoptions, char *prefix)
|
int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions, int numoptions, char *prefix)
|
||||||
{
|
{
|
||||||
config_setting_t *setting;
|
config_setting_t *setting;
|
||||||
char *str;
|
char *str = NULL;
|
||||||
int i,u;
|
int u = 0;
|
||||||
long long int llu;
|
long long int llu = 0;
|
||||||
double dbl;
|
double dbl = 0.0f;
|
||||||
int rst;
|
int status = 0;
|
||||||
int status=0;
|
int fatalerror = 0;
|
||||||
int notfound;
|
int numdefvals = 0;
|
||||||
int defval;
|
|
||||||
int fatalerror=0;
|
|
||||||
int numdefvals=0;
|
|
||||||
char cfgpath[512]; /* 512 should be enough for the sprintf below */
|
char cfgpath[512]; /* 512 should be enough for the sprintf below */
|
||||||
|
|
||||||
for(i=0; i<numoptions; i++) {
|
for(int i=0; i<numoptions; i++) {
|
||||||
if (prefix != NULL) {
|
if (prefix != NULL) {
|
||||||
sprintf(cfgpath,"%s.%s",prefix,cfgoptions[i].optname);
|
sprintf(cfgpath,"%s.%s",prefix,cfgoptions[i].optname);
|
||||||
} else {
|
} else {
|
||||||
@@ -346,8 +343,8 @@ int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
notfound=0;
|
int notfound = 0;
|
||||||
defval=0;
|
int defval = 0;
|
||||||
|
|
||||||
switch(cfgoptions[i].type) {
|
switch(cfgoptions[i].type) {
|
||||||
case TYPE_STRING:
|
case TYPE_STRING:
|
||||||
@@ -436,7 +433,7 @@ int config_libconfig_get(configmodule_interface_t *cfg, paramdef_t *cfgoptions,
|
|||||||
if ( !config_lookup_string(&(libconfig_privdata.cfg),cfgpath, (const char **)&str)) {
|
if ( !config_lookup_string(&(libconfig_privdata.cfg),cfgpath, (const char **)&str)) {
|
||||||
defval = config_setdefault_ipv4addr(cfg, &(cfgoptions[i]), prefix);
|
defval = config_setdefault_ipv4addr(cfg, &(cfgoptions[i]), prefix);
|
||||||
} else {
|
} else {
|
||||||
rst = config_assign_ipv4addr(cfg, cfgoptions, str);
|
int rst = config_assign_ipv4addr(cfg, cfgoptions, str);
|
||||||
|
|
||||||
if (rst < 0) {
|
if (rst < 0) {
|
||||||
fprintf(stderr,"[LIBCONFIG] %s not valid for %s \n", str, cfgpath);
|
fprintf(stderr,"[LIBCONFIG] %s not valid for %s \n", str, cfgpath);
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ index 0000000000..00baf34774
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /* a buffer needed to receive events from the nr-softmodem */
|
+ /* a buffer needed to receive events from the nr-softmodem */
|
||||||
+ OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
+ OBUF ebuf = { .osize = 0, .omaxsize = 0, .obuf = NULL };
|
||||||
+
|
+
|
||||||
+ /* read events */
|
+ /* read events */
|
||||||
+ while (1) {
|
+ while (1) {
|
||||||
|
|||||||
@@ -874,7 +874,7 @@ int main(int n, char **v)
|
|||||||
if (pthread_mutex_init(&enb_data.lock, NULL)) abort();
|
if (pthread_mutex_init(&enb_data.lock, NULL)) abort();
|
||||||
setup_event_selector(g, database, is_on, is_on_changed, &enb_data);
|
setup_event_selector(g, database, is_on, is_on_changed, &enb_data);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
clear_remote_config();
|
clear_remote_config();
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ again:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
read_error:
|
read_error:
|
||||||
return (event){type: -1};
|
return (event){.type = -1};
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef T_SEND_TIME
|
#ifdef T_SEND_TIME
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ int main(int n, char **v)
|
|||||||
|
|
||||||
found = 0;
|
found = 0;
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
event e;
|
event e;
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ int main(int n, char **v)
|
|||||||
in = fopen(input_filename, "r");
|
in = fopen(input_filename, "r");
|
||||||
if (in == NULL) { perror(input_filename); abort(); }
|
if (in == NULL) { perror(input_filename); abort(); }
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int type;
|
int type;
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ err:
|
|||||||
fd = open(file, O_RDONLY);
|
fd = open(file, O_RDONLY);
|
||||||
if (fd == -1) { perror(file); exit(1); }
|
if (fd == -1) { perror(file); exit(1); }
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
/* get wanted frame/subframe */
|
/* get wanted frame/subframe */
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ err:
|
|||||||
int last_subframe = -1;
|
int last_subframe = -1;
|
||||||
int subframe_written = 0;
|
int subframe_written = 0;
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
event e;
|
event e;
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ int main(int n, char **v)
|
|||||||
|
|
||||||
gnb_main_gui(&eg, g, h, database, &gnb_data);
|
gnb_main_gui(&eg, g, h, database, &gnb_data);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
clear_remote_config();
|
clear_remote_config();
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ int main(int n, char **v) {
|
|||||||
socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
|
socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
|
||||||
abort();
|
abort();
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
char dump[10][T_BUFFER_MAX];
|
char dump[10][T_BUFFER_MAX];
|
||||||
event dump_ev[10];
|
event dump_ev[10];
|
||||||
FILE *z = fopen("/tmp/dd", "w");
|
FILE *z = fopen("/tmp/dd", "w");
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ int main(int n, char **v)
|
|||||||
|
|
||||||
clear_cache(number_of_tags, cache);
|
clear_cache(number_of_tags, cache);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int type;
|
int type;
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ int main(int n, char **v)
|
|||||||
socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
|
socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
|
||||||
abort();
|
abort();
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
event e;
|
event e;
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ static struct chunk next_chunk(char **s, database_event_format f)
|
|||||||
cur++;
|
cur++;
|
||||||
*s = cur;
|
*s = cur;
|
||||||
if (find_argument(name, f, &it, &event_arg) == 0) goto error;
|
if (find_argument(name, f, &it, &event_arg) == 0) goto error;
|
||||||
return (struct chunk){type:C_ARG_NAME, s:name, it:it, event_arg:event_arg};
|
return (struct chunk){.type = C_ARG_NAME, .s = name, .it = it, .event_arg = event_arg};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* { } is name of event (anything in between is smashed) */
|
/* { } is name of event (anything in between is smashed) */
|
||||||
@@ -143,7 +143,7 @@ static struct chunk next_chunk(char **s, database_event_format f)
|
|||||||
*cur = 0;
|
*cur = 0;
|
||||||
cur++;
|
cur++;
|
||||||
*s = cur;
|
*s = cur;
|
||||||
return (struct chunk){type:C_EVENT_NAME};
|
return (struct chunk){.type = C_EVENT_NAME};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* anything but [ and { is raw string */
|
/* anything but [ and { is raw string */
|
||||||
@@ -151,10 +151,10 @@ static struct chunk next_chunk(char **s, database_event_format f)
|
|||||||
name = cur;
|
name = cur;
|
||||||
while (*cur && *cur != '[' && *cur != '{') cur++;
|
while (*cur && *cur != '[' && *cur != '{') cur++;
|
||||||
*s = cur;
|
*s = cur;
|
||||||
return (struct chunk){type:C_STRING, s:name};
|
return (struct chunk){.type = C_STRING, .s = name};
|
||||||
|
|
||||||
error:
|
error:
|
||||||
return (struct chunk){type:C_ERROR};
|
return (struct chunk){.type = C_ERROR};
|
||||||
}
|
}
|
||||||
|
|
||||||
logger *new_textlog(event_handler *h, void *database,
|
logger *new_textlog(event_handler *h, void *database,
|
||||||
|
|||||||
@@ -808,7 +808,7 @@ int main(int n, char **v)
|
|||||||
d.to.sin_port = htons(port);
|
d.to.sin_port = htons(port);
|
||||||
d.to.sin_addr.s_addr = inet_addr(ip);
|
d.to.sin_addr.s_addr = inet_addr(ip);
|
||||||
new_thread(receiver, &d);
|
new_thread(receiver, &d);
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
/* read messages */
|
/* read messages */
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ int send_messages_txt(int s, char *T_messages_txt, int T_messages_txt_len)
|
|||||||
/* TODO: be careful, we use internal T stuff, to rewrite? */
|
/* TODO: be careful, we use internal T stuff, to rewrite? */
|
||||||
T_LOCAL_size = 0;
|
T_LOCAL_size = 0;
|
||||||
T_HEADER(T_ID(-1));
|
T_HEADER(T_ID(-1));
|
||||||
T_PUT_buffer(1, ((T_buffer){addr:(src), length:(send_size)}));
|
T_PUT_buffer(1, ((T_buffer){.addr = src, .length = send_size}));
|
||||||
if (socket_send(s, &T_LOCAL_size, 4) == -1) return -1;
|
if (socket_send(s, &T_LOCAL_size, 4) == -1) return -1;
|
||||||
if (socket_send(s, buf, T_LOCAL_size) == -1) return -1;
|
if (socket_send(s, buf, T_LOCAL_size) == -1) return -1;
|
||||||
src += send_size;
|
src += send_size;
|
||||||
@@ -242,7 +242,7 @@ int main(int n, char **v)
|
|||||||
/* create listener socket */
|
/* create listener socket */
|
||||||
l = create_listen_socket("0.0.0.0", local_port);
|
l = create_listen_socket("0.0.0.0", local_port);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
current_nfd = 0;
|
current_nfd = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ int main(int n, char **v)
|
|||||||
if (signal(SIGINT, force_stop) == SIG_ERR) abort();
|
if (signal(SIGINT, force_stop) == SIG_ERR) abort();
|
||||||
if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
|
if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
/* read messages */
|
/* read messages */
|
||||||
while (run) {
|
while (run) {
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ int main(int n, char **v)
|
|||||||
|
|
||||||
new_thread(get_message_thread, &socket);
|
new_thread(get_message_thread, &socket);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int type;
|
int type;
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ int main(int n, char **v)
|
|||||||
/* send the first message - activate selected traces */
|
/* send the first message - activate selected traces */
|
||||||
activate_traces(socket, is_on, number_of_events);
|
activate_traces(socket, is_on, number_of_events);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
/* read messages */
|
/* read messages */
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ int main(int n, char **v)
|
|||||||
if (signal(SIGINT, force_stop) == SIG_ERR) abort();
|
if (signal(SIGINT, force_stop) == SIG_ERR) abort();
|
||||||
if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
|
if (signal(SIGTSTP, force_stop) == SIG_ERR) abort();
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
/* read messages */
|
/* read messages */
|
||||||
while (run) {
|
while (run) {
|
||||||
|
|||||||
@@ -758,7 +758,7 @@ int main(int n, char **v)
|
|||||||
if (pthread_mutex_init(&ue_data.lock, NULL)) abort();
|
if (pthread_mutex_init(&ue_data.lock, NULL)) abort();
|
||||||
setup_event_selector(g, database, is_on, is_on_changed, &ue_data);
|
setup_event_selector(g, database, is_on, is_on_changed, &ue_data);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
clear_remote_config();
|
clear_remote_config();
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ int main(int n, char **v)
|
|||||||
/* send the first message - activate selected traces */
|
/* send the first message - activate selected traces */
|
||||||
is_on_changed(&vcd_data);
|
is_on_changed(&vcd_data);
|
||||||
|
|
||||||
OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
|
OBUF ebuf = {.osize = 0, .omaxsize = 0, .obuf = NULL};
|
||||||
|
|
||||||
/* read messages */
|
/* read messages */
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|||||||
@@ -129,8 +129,7 @@ static void *ticktime_thread(void *_this)
|
|||||||
pixel_length = this->pixel_length;
|
pixel_length = this->pixel_length;
|
||||||
|
|
||||||
if (this->autoscroll) {
|
if (this->autoscroll) {
|
||||||
tnext = time_add(this->latest_time,
|
tnext = time_add(this->latest_time, (struct timespec){.tv_sec = 0, .tv_nsec = 1});
|
||||||
(struct timespec){tv_sec:0,tv_nsec:1});
|
|
||||||
tstart = time_sub(tnext, nano_to_time(pixel_length * width));
|
tstart = time_sub(tnext, nano_to_time(pixel_length * width));
|
||||||
this->start_time = tstart;
|
this->start_time = tstart;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -122,8 +122,7 @@ static void *time_thread(void *_this)
|
|||||||
pixel_length = this->pixel_length;
|
pixel_length = this->pixel_length;
|
||||||
|
|
||||||
if (this->autoscroll) {
|
if (this->autoscroll) {
|
||||||
tnext = time_add(this->latest_time,
|
tnext = time_add(this->latest_time, (struct timespec){.tv_sec = 0, .tv_nsec = 1});
|
||||||
(struct timespec){tv_sec:0,tv_nsec:1});
|
|
||||||
tstart = time_sub(tnext, nano_to_time(pixel_length * width));
|
tstart = time_sub(tnext, nano_to_time(pixel_length * width));
|
||||||
this->start_time = tstart;
|
this->start_time = tstart;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -391,8 +391,8 @@ void build_polar_tables(t_nrPolar_params *polarParams) {
|
|||||||
// this code packs the one bit per byte of G_N into a packed bits G_N_tab
|
// this code packs the one bit per byte of G_N into a packed bits G_N_tab
|
||||||
for (int i = 0; i < polarParams->N; i++) {
|
for (int i = 0; i < polarParams->N; i++) {
|
||||||
for (int j = 0; j < polarParams->N; j += 64) {
|
for (int j = 0; j < polarParams->N; j += 64) {
|
||||||
const simde__m256i tmp1 = simde_mm256_cmpgt_epi8(*(simde__m256i *)&polarParams->G_N[i][j], zeros);
|
const simde__m256i tmp1 = simde_mm256_cmpgt_epi8(simde_mm256_loadu_si256((simde__m256i *)&polarParams->G_N[i][j]), zeros);
|
||||||
const simde__m256i tmp2 = simde_mm256_cmpgt_epi8(*(simde__m256i *)&polarParams->G_N[i][j + 32], zeros);
|
const simde__m256i tmp2 = simde_mm256_cmpgt_epi8(simde_mm256_loadu_si256((simde__m256i *)&polarParams->G_N[i][j + 32]), zeros);
|
||||||
// cast directly to uint64_t from int32_t propagates the sign bit (in gcc)
|
// cast directly to uint64_t from int32_t propagates the sign bit (in gcc)
|
||||||
const uint32_t part1 = simde_mm256_movemask_epi8(tmp1);
|
const uint32_t part1 = simde_mm256_movemask_epi8(tmp1);
|
||||||
const uint32_t part2 = simde_mm256_movemask_epi8(tmp2);
|
const uint32_t part2 = simde_mm256_movemask_epi8(tmp2);
|
||||||
|
|||||||
@@ -184,8 +184,9 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
|
|||||||
AssertFatal(pdsch_dmrs[slot][symb]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d - malloc failed\n", slot, symb);
|
AssertFatal(pdsch_dmrs[slot][symb]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d - malloc failed\n", slot, symb);
|
||||||
|
|
||||||
for (int q=0; q<NR_NB_NSCID; q++) {
|
for (int q=0; q<NR_NB_NSCID; q++) {
|
||||||
pdsch_dmrs[slot][symb][q] = (uint32_t *)malloc16(pdsch_dmrs_init_length*sizeof(uint32_t));
|
pdsch_dmrs[slot][symb][q] = malloc16(pdsch_dmrs_init_length * sizeof(uint32_t));
|
||||||
AssertFatal(pdsch_dmrs[slot][symb][q]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d nscid %d - malloc failed\n", slot, symb, q);
|
AssertFatal(pdsch_dmrs[slot][symb][q]!=NULL, "NR init: pdsch_dmrs for slot %d symbol %d nscid %d - malloc failed\n", slot, symb, q);
|
||||||
|
memset(pdsch_dmrs[slot][symb][q], 0, sizeof(uint32_t) * pdsch_dmrs_init_length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -534,8 +534,7 @@ void free_nr_ue_ul_harq(NR_UL_UE_HARQ_t harq_list[NR_MAX_ULSCH_HARQ_PROCESSES],
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < number_of_processes; i++) {
|
for (int i = 0; i < number_of_processes; i++) {
|
||||||
free_and_zero(harq_list[i].a);
|
free_and_zero(harq_list[i].payload_AB);
|
||||||
free_and_zero(harq_list[i].b);
|
|
||||||
for (int r = 0; r < a_segments; r++) {
|
for (int r = 0; r < a_segments; r++) {
|
||||||
free_and_zero(harq_list[i].c[r]);
|
free_and_zero(harq_list[i].c[r]);
|
||||||
free_and_zero(harq_list[i].d[r]);
|
free_and_zero(harq_list[i].d[r]);
|
||||||
@@ -598,13 +597,9 @@ void nr_init_ul_harq_processes(NR_UL_UE_HARQ_t harq_list[NR_MAX_ULSCH_HARQ_PROCE
|
|||||||
|
|
||||||
memset(harq_list + i, 0, sizeof(NR_UL_UE_HARQ_t));
|
memset(harq_list + i, 0, sizeof(NR_UL_UE_HARQ_t));
|
||||||
|
|
||||||
harq_list[i].a = malloc16(ulsch_bytes);
|
harq_list[i].payload_AB = malloc16(ulsch_bytes);
|
||||||
DevAssert(harq_list[i].a);
|
DevAssert(harq_list[i].payload_AB);
|
||||||
bzero(harq_list[i].a, ulsch_bytes);
|
bzero(harq_list[i].payload_AB, ulsch_bytes);
|
||||||
|
|
||||||
harq_list[i].b = malloc16(ulsch_bytes);
|
|
||||||
DevAssert(harq_list[i].b);
|
|
||||||
bzero(harq_list[i].b, ulsch_bytes);
|
|
||||||
|
|
||||||
harq_list[i].c = malloc16(a_segments*sizeof(uint8_t *));
|
harq_list[i].c = malloc16(a_segments*sizeof(uint8_t *));
|
||||||
harq_list[i].d = malloc16(a_segments*sizeof(uint16_t *));
|
harq_list[i].d = malloc16(a_segments*sizeof(uint16_t *));
|
||||||
|
|||||||
@@ -55,9 +55,7 @@ typedef struct {
|
|||||||
/// Index of current HARQ round for this ULSCH
|
/// Index of current HARQ round for this ULSCH
|
||||||
uint8_t round;
|
uint8_t round;
|
||||||
/// pointer to pdu from MAC interface (TS 36.212 V15.4.0, Sec 5.1 p. 8)
|
/// pointer to pdu from MAC interface (TS 36.212 V15.4.0, Sec 5.1 p. 8)
|
||||||
unsigned char *a;
|
unsigned char *payload_AB;
|
||||||
/// Pointer to the payload + CRC
|
|
||||||
uint8_t *b;
|
|
||||||
/// Pointers to transport block segments
|
/// Pointers to transport block segments
|
||||||
uint8_t **c;
|
uint8_t **c;
|
||||||
/// LDPC-code outputs
|
/// LDPC-code outputs
|
||||||
|
|||||||
@@ -87,21 +87,19 @@ int nr_ulsch_encoding(PHY_VARS_NR_UE *ue,
|
|||||||
int B;
|
int B;
|
||||||
if (A > NR_MAX_PDSCH_TBS) {
|
if (A > NR_MAX_PDSCH_TBS) {
|
||||||
// Add 24-bit crc (polynomial A) to payload
|
// Add 24-bit crc (polynomial A) to payload
|
||||||
crc = crc24a(harq_process->a,A)>>8;
|
crc = crc24a(harq_process->payload_AB, A) >> 8;
|
||||||
harq_process->a[A>>3] = ((uint8_t*)&crc)[2];
|
harq_process->payload_AB[A >> 3] = ((uint8_t *)&crc)[2];
|
||||||
harq_process->a[1+(A>>3)] = ((uint8_t*)&crc)[1];
|
harq_process->payload_AB[1 + (A >> 3)] = ((uint8_t *)&crc)[1];
|
||||||
harq_process->a[2 + (A >> 3)] = ((uint8_t *)&crc)[0];
|
harq_process->payload_AB[2 + (A >> 3)] = ((uint8_t *)&crc)[0];
|
||||||
B = A + 24;
|
B = A + 24;
|
||||||
AssertFatal((A / 8) + 4 <= max_payload_bytes, "A %d is too big (A/8+4 = %d > %d)\n", A, (A / 8) + 4, max_payload_bytes);
|
AssertFatal((A / 8) + 4 <= max_payload_bytes, "A %d is too big (A/8+4 = %d > %d)\n", A, (A / 8) + 4, max_payload_bytes);
|
||||||
memcpy(harq_process->b,harq_process->a,(A/8)+4);
|
|
||||||
} else {
|
} else {
|
||||||
// Add 16-bit crc (polynomial A) to payload
|
// Add 16-bit crc (polynomial A) to payload
|
||||||
crc = crc16(harq_process->a,A)>>16;
|
crc = crc16(harq_process->payload_AB, A) >> 16;
|
||||||
harq_process->a[A>>3] = ((uint8_t*)&crc)[1];
|
harq_process->payload_AB[A >> 3] = ((uint8_t *)&crc)[1];
|
||||||
harq_process->a[1 + (A >> 3)] = ((uint8_t *)&crc)[0];
|
harq_process->payload_AB[1 + (A >> 3)] = ((uint8_t *)&crc)[0];
|
||||||
B = A + 16;
|
B = A + 16;
|
||||||
AssertFatal((A / 8) + 3 <= max_payload_bytes, "A %d is too big (A/8+3 = %d > %d)\n", A, (A / 8) + 3, max_payload_bytes);
|
AssertFatal((A / 8) + 3 <= max_payload_bytes, "A %d is too big (A/8+3 = %d > %d)\n", A, (A / 8) + 3, max_payload_bytes);
|
||||||
memcpy(harq_process->b,harq_process->a,(A/8)+3); // using 3 bytes to mimic the case of 24 bit crc
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////// b---->| block segmentation |---->c /////////////////////////
|
///////////////////////// b---->| block segmentation |---->c /////////////////////////
|
||||||
@@ -110,7 +108,7 @@ int nr_ulsch_encoding(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_SEGMENTATION, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_SEGMENTATION, VCD_FUNCTION_IN);
|
||||||
start_meas(&ue->ulsch_segmentation_stats);
|
start_meas(&ue->ulsch_segmentation_stats);
|
||||||
impp.Kb = nr_segmentation(harq_process->b,
|
impp.Kb = nr_segmentation(harq_process->payload_AB,
|
||||||
harq_process->c,
|
harq_process->c,
|
||||||
B,
|
B,
|
||||||
&harq_process->C,
|
&harq_process->C,
|
||||||
|
|||||||
@@ -191,10 +191,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
mod_order,
|
mod_order,
|
||||||
Nl);
|
Nl);
|
||||||
|
|
||||||
trace_NRpdu(DIRECTION_UPLINK,
|
trace_NRpdu(DIRECTION_UPLINK, harq_process_ul_ue->payload_AB, tb_size, WS_C_RNTI, rnti, frame, slot, 0, 0);
|
||||||
harq_process_ul_ue->a,
|
|
||||||
tb_size,
|
|
||||||
WS_C_RNTI, rnti, frame, slot, 0, 0);
|
|
||||||
|
|
||||||
if (nr_ulsch_encoding(UE, ulsch_ue, frame_parms, harq_pid, tb_size, G) == -1)
|
if (nr_ulsch_encoding(UE, ulsch_ue, frame_parms, harq_pid, tb_size, G) == -1)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ static void nr_ue_scheduled_response_ul(PHY_VARS_NR_UE *phy, fapi_nr_ul_config_r
|
|||||||
ul_config->slot,
|
ul_config->slot,
|
||||||
pdu->pusch_config_pdu.tx_request_body.pdu_length,
|
pdu->pusch_config_pdu.tx_request_body.pdu_length,
|
||||||
current_harq_pid);
|
current_harq_pid);
|
||||||
memcpy(harq_process_ul_ue->a,
|
memcpy(harq_process_ul_ue->payload_AB,
|
||||||
pdu->pusch_config_pdu.tx_request_body.pdu,
|
pdu->pusch_config_pdu.tx_request_body.pdu,
|
||||||
pdu->pusch_config_pdu.tx_request_body.pdu_length);
|
pdu->pusch_config_pdu.tx_request_body.pdu_length);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -507,7 +507,7 @@ int main(int argc, char **argv)
|
|||||||
ulsch_ue->pusch_pdu.target_code_rate = code_rate;
|
ulsch_ue->pusch_pdu.target_code_rate = code_rate;
|
||||||
ulsch_ue->pusch_pdu.qam_mod_order = mod_order;
|
ulsch_ue->pusch_pdu.qam_mod_order = mod_order;
|
||||||
ulsch_ue->pusch_pdu.ldpcBaseGraph = get_BG(TBS, code_rate);
|
ulsch_ue->pusch_pdu.ldpcBaseGraph = get_BG(TBS, code_rate);
|
||||||
unsigned char *test_input = harq_process_ul_ue->a;
|
unsigned char *test_input = harq_process_ul_ue->payload_AB;
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -1141,7 +1141,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < (TBS / 8); i++)
|
for (int i = 0; i < (TBS / 8); i++)
|
||||||
UE->ul_harq_processes[harq_pid].a[i] = i & 0xff;
|
UE->ul_harq_processes[harq_pid].payload_AB[i] = i & 0xff;
|
||||||
|
|
||||||
if (input_fd == NULL) {
|
if (input_fd == NULL) {
|
||||||
// set FAPI parameters for UE, put them in the scheduled response and call
|
// set FAPI parameters for UE, put them in the scheduled response and call
|
||||||
@@ -1457,8 +1457,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
for (i = 0; i < TBS; i++) {
|
for (i = 0; i < TBS; i++) {
|
||||||
uint8_t estimated_output_bit = (ulsch_gNB->harq_process->b[i / 8] & (1 << (i & 7))) >> (i & 7);
|
uint8_t estimated_output_bit = (ulsch_gNB->harq_process->b[i / 8] & (1 << (i & 7))) >> (i & 7);
|
||||||
uint8_t test_input_bit = (UE->ul_harq_processes[harq_pid].b[i / 8] & (1 << (i & 7))) >> (i & 7);
|
uint8_t test_input_bit = (UE->ul_harq_processes[harq_pid].payload_AB[i / 8] & (1 << (i & 7))) >> (i & 7);
|
||||||
|
|
||||||
if (estimated_output_bit != test_input_bit) {
|
if (estimated_output_bit != test_input_bit) {
|
||||||
/*if(errors_decoding == 0)
|
/*if(errors_decoding == 0)
|
||||||
printf("\x1B[34m""[frame %d][trial %d]\t1st bit in error in decoding = %d\n" "\x1B[0m", frame, trial, i);*/
|
printf("\x1B[34m""[frame %d][trial %d]\t1st bit in error in decoding = %d\n" "\x1B[0m", frame, trial, i);*/
|
||||||
|
|||||||
@@ -893,19 +893,7 @@ uint8_t do_RRCSetupComplete(uint8_t *buffer,
|
|||||||
NR_RRCSetupComplete_IEs_t *ies = RrcSetupComplete->criticalExtensions.choice.rrcSetupComplete;
|
NR_RRCSetupComplete_IEs_t *ies = RrcSetupComplete->criticalExtensions.choice.rrcSetupComplete;
|
||||||
ies->selectedPLMN_Identity = sel_plmn_id;
|
ies->selectedPLMN_Identity = sel_plmn_id;
|
||||||
ies->registeredAMF = NULL;
|
ies->registeredAMF = NULL;
|
||||||
|
ies->ng_5G_S_TMSI_Value = NULL;
|
||||||
ies->ng_5G_S_TMSI_Value = CALLOC(1, sizeof(struct NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value));
|
|
||||||
ies->ng_5G_S_TMSI_Value->present = NR_RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI;
|
|
||||||
NR_NG_5G_S_TMSI_t *stmsi = &ies->ng_5G_S_TMSI_Value->choice.ng_5G_S_TMSI;
|
|
||||||
stmsi->size = 6;
|
|
||||||
stmsi->buf = calloc(stmsi->size, sizeof(*stmsi->buf));
|
|
||||||
AssertFatal(stmsi->buf != NULL, "out of memory\n");
|
|
||||||
stmsi->buf[0] = 0x12;
|
|
||||||
stmsi->buf[1] = 0x34;
|
|
||||||
stmsi->buf[2] = 0x56;
|
|
||||||
stmsi->buf[3] = 0x78;
|
|
||||||
stmsi->buf[4] = 0x9A;
|
|
||||||
stmsi->buf[5] = 0xBC;
|
|
||||||
|
|
||||||
memset(&ies->dedicatedNAS_Message,0,sizeof(OCTET_STRING_t));
|
memset(&ies->dedicatedNAS_Message,0,sizeof(OCTET_STRING_t));
|
||||||
OCTET_STRING_fromBuf(&ies->dedicatedNAS_Message, dedicatedInfoNAS, dedicatedInfoNASLength);
|
OCTET_STRING_fromBuf(&ies->dedicatedNAS_Message, dedicatedInfoNAS, dedicatedInfoNASLength);
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ typedef struct {
|
|||||||
static int allocCirBuf(rfsimulator_state_t *bridge, int sock)
|
static int allocCirBuf(rfsimulator_state_t *bridge, int sock)
|
||||||
{
|
{
|
||||||
buffer_t *ptr=&bridge->buf[sock];
|
buffer_t *ptr=&bridge->buf[sock];
|
||||||
ptr->circularBuf = malloc(sampleToByte(CirSize, 1));
|
ptr->circularBuf = calloc(1, sampleToByte(CirSize, 1));
|
||||||
if (ptr->circularBuf == NULL) {
|
if (ptr->circularBuf == NULL) {
|
||||||
LOG_E(HW, "malloc(%lu) failed\n", sampleToByte(CirSize, 1));
|
LOG_E(HW, "malloc(%lu) failed\n", sampleToByte(CirSize, 1));
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user