Add NSA mode to working dl_tti messages from gNB

This commit is not currently building, but I wanted
to be able to save the changes that I have added.
This commit is contained in:
Melissa Elkadi
2021-04-30 13:36:18 -07:00
parent f434a8ded9
commit e1a77b2d82
55 changed files with 974 additions and 380 deletions
+18 -25
View File
@@ -14,38 +14,31 @@
* limitations under the License.
*/
#pragma once
#ifndef _DEBUG_H_
#define _DEBUG_H_
#include <string.h>
#include <errno.h>
#define ERR strerror(errno)
/*! The trace levels used by the nfapi libraries */
typedef enum nfapi_trace_level
{
NFAPI_TRACE_ERROR = 1,
NFAPI_TRACE_WARN,
NFAPI_TRACE_NOTE,
NFAPI_TRACE_INFO,
NFAPI_TRACE_LEVEL_MAX
NFAPI_TRACE_NONE,
NFAPI_TRACE_ERROR,
NFAPI_TRACE_WARN,
NFAPI_TRACE_NOTE,
NFAPI_TRACE_INFO,
NFAPI_TRACE_DEBUG,
} nfapi_trace_level_t;
/*! The trace function pointer */
typedef void (*nfapi_trace_fn_t)(nfapi_trace_level_t level, const char* format, ...);
void nfapi_trace(nfapi_trace_level_t, char const *caller, const char *format, ...)
__attribute__((format(printf, 3, 4)));
/*! Global trace function */
extern nfapi_trace_fn_t nfapi_trace_g;
nfapi_trace_level_t nfapi_trace_level(void);
/*! Global trace level */
extern nfapi_trace_level_t nfapi_trace_level_g;
#define NFAPI_TRACE(LEVEL, FORMAT, ...) do { \
if (nfapi_trace_level() >= (LEVEL)) \
nfapi_trace(LEVEL, __func__, FORMAT, ##__VA_ARGS__); \
} while (0)
/*! NFAPI trace macro */
//#define NFAPI_TRACE(level, format, ...) { if(nfapi_trace_g && ((nfapi_trace_level_t)level <= nfapi_trace_level_g)) (*nfapi_trace_g)(level, format, ##__VA_ARGS__); }
#define NFAPI_TRACE(level, format, ...) { if (nfapi_trace_g) (*nfapi_trace_g)(level, format, ##__VA_ARGS__); }
/*! Function to change the trace level
* \param new_level The modified trace level
*/
void nfapi_set_trace_level(nfapi_trace_level_t new_level);
#endif /* _DEBUG_H_ */
+58 -37
View File
@@ -14,53 +14,74 @@
* limitations under the License.
*/
#include "debug.h"
#include <stdio.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/types.h>
#include <time.h>
#include <pthread.h>
#include <syslog.h>
#include <stdbool.h>
#include <debug.h>
static nfapi_trace_level_t trace_level = NFAPI_TRACE_WARN;
#define MAX_MSG_LENGTH 2096
#define TRACE_HEADER_LENGTH 44
void nfapi_trace_dbg(nfapi_trace_level_t level, const char *format, ...);
// initialize the trace function to 0
void (*nfapi_trace_g)(nfapi_trace_level_t level, const char* format, ...) = &nfapi_trace_dbg;
nfapi_trace_level_t nfapi_trace_level_g = NFAPI_TRACE_ERROR;
//nfapi_trace_level_t nfapi_trace_level_g = NFAPI_TRACE_WARN;
void nfapi_set_trace_level(nfapi_trace_level_t new_level)
static void nfapi_trace_init(void)
{
nfapi_trace_level_g = new_level;
static bool initialized;
if (initialized)
return;
initialized = true;
const char *env = getenv("NFAPI_TRACE_LEVEL");
if (!env)
return;
if (strcmp(env, "none") == 0)
trace_level = NFAPI_TRACE_NONE;
else if (strcmp(env, "error") == 0)
trace_level = NFAPI_TRACE_ERROR;
else if (strcmp(env, "warn") == 0)
trace_level = NFAPI_TRACE_WARN;
else if (strcmp(env, "note") == 0)
trace_level = NFAPI_TRACE_NOTE;
else if (strcmp(env, "info") == 0)
trace_level = NFAPI_TRACE_INFO;
else if (strcmp(env, "debug") == 0)
trace_level = NFAPI_TRACE_DEBUG;
else
{
nfapi_trace(NFAPI_TRACE_ERROR, __func__, "Invalid NFAPI_TRACE_LEVEL='%s'", env);
return;
}
nfapi_trace(trace_level, __func__, "NFAPI_TRACE_LEVEL='%s'", env);
}
void nfapi_trace_dbg(nfapi_trace_level_t level, const char *format, ...)
nfapi_trace_level_t nfapi_trace_level()
{
if (level < nfapi_trace_level_g)
return;
char trace_buff[MAX_MSG_LENGTH + TRACE_HEADER_LENGTH];
va_list p_args;
struct timeval tv;
pthread_t tid = pthread_self();
nfapi_trace_init();
return trace_level;
}
(void)gettimeofday(&tv, NULL);
void nfapi_trace(nfapi_trace_level_t level,
char const *caller,
char const *format, ...)
{
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
printf("%ld%06ld [%c] %10u: %s: ",
ts.tv_sec,
ts.tv_nsec / 1000,
"XEWNID"[level], // NFAPI_TRACE_NONE, NFAPI_TRACE_ERROR, ...
(unsigned) pthread_self(),
caller);
snprintf(trace_buff, sizeof(trace_buff), "%04u.%06u: 0x%02x: %10u: ", ((uint32_t)tv.tv_sec) & 0x1FFF, (uint32_t)tv.tv_usec, (uint32_t)level, (uint32_t)tid);
int n = strlen(trace_buff);
va_start(p_args, format);
vsnprintf(trace_buff + n, sizeof(trace_buff) - n, format, p_args);
va_end(p_args);
fputs(trace_buff, stdout);
fflush(stdout);
va_list ap;
va_start(ap, format);
vprintf(format, ap);
va_end(ap);
// Add a newline if the format string didn't have one
int len = strlen(format);
if (len == 0 || format[len - 1] != '\n')
putchar('\n');
fflush(stdout);
}