Added a command line option "-K file_name" to save ITTI logs directly.
Created "RRC_MAC_BCCH_DATA_REQ" message. Separated L2L1 sub task by eNB/UE to separate messages handling in PDCP and MAC. Added ITTI messages poll in MAC sub tasks. pre-ci ok. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4300 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -118,13 +118,13 @@ static inline uint32_t itti_get_message_priority(MessagesIds message_id) {
|
||||
return (itti_desc.messages_info[message_id].priority);
|
||||
}
|
||||
|
||||
char *itti_get_message_name(MessagesIds message_id) {
|
||||
const char *itti_get_message_name(MessagesIds message_id) {
|
||||
DevCheck(message_id < itti_desc.messages_id_max, message_id, itti_desc.messages_id_max, 0);
|
||||
|
||||
return (itti_desc.messages_info[message_id].name);
|
||||
}
|
||||
|
||||
char *itti_get_task_name(task_id_t task_id)
|
||||
const char *itti_get_task_name(task_id_t task_id)
|
||||
{
|
||||
thread_id_t thread_id = TASK_GET_THREAD_ID(task_id);
|
||||
|
||||
@@ -390,7 +390,7 @@ void itti_terminate_tasks(task_id_t task_id) {
|
||||
}
|
||||
|
||||
int itti_init(thread_id_t thread_max, MessagesIds messages_id_max, const char * const *threads_name,
|
||||
const message_info_t *messages_info, const char * const messages_definition_xml) {
|
||||
const message_info_t *messages_info, const char * const messages_definition_xml, const char * const dump_file_name) {
|
||||
int i;
|
||||
itti_desc.message_number = 0;
|
||||
|
||||
@@ -420,7 +420,7 @@ int itti_init(thread_id_t thread_max, MessagesIds messages_id_max, const char *
|
||||
pthread_cond_init (&itti_desc.tasks[i].message_queue_cond_var, NULL);
|
||||
itti_desc.tasks[i].task_state = TASK_STATE_NOT_CONFIGURED;
|
||||
}
|
||||
itti_dump_init (messages_definition_xml);
|
||||
itti_dump_init (messages_definition_xml, dump_file_name);
|
||||
|
||||
CHECK_INIT_RETURN(timer_init ());
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ typedef struct message_info_s {
|
||||
/* Message payload size */
|
||||
MessageHeaderSize size;
|
||||
/* Printable name */
|
||||
char *name;
|
||||
const char * const name;
|
||||
} message_info_t;
|
||||
|
||||
enum task_priorities {
|
||||
@@ -137,12 +137,12 @@ void itti_terminate_tasks(task_id_t task_id);
|
||||
/** \brief Return the printable string associated with the message
|
||||
* \param message_id Id of the message
|
||||
**/
|
||||
char *itti_get_message_name(MessagesIds message_id);
|
||||
const char *itti_get_message_name(MessagesIds message_id);
|
||||
|
||||
/** \brief Return the printable string associated with a task id
|
||||
* \param thread_id Id of the task
|
||||
**/
|
||||
char *itti_get_task_name(task_id_t task_id);
|
||||
const char *itti_get_task_name(task_id_t task_id);
|
||||
|
||||
/** \brief Alloc and memset(0) a new itti message.
|
||||
* \param origin_task_id Task ID of the sending task
|
||||
|
||||
@@ -100,8 +100,6 @@ typedef struct itti_desc_s {
|
||||
itti_client_desc_t itti_clients[ITTI_DUMP_MAX_CON];
|
||||
} itti_desc_t;
|
||||
|
||||
static itti_desc_t itti_queue;
|
||||
|
||||
/* Message sent is an intertask dump type */
|
||||
#define ITTI_DUMP_MESSAGE_TYPE 0x1
|
||||
#define ITTI_STATISTIC_MESSAGE_TYPE 0x2
|
||||
@@ -127,6 +125,9 @@ typedef struct {
|
||||
|
||||
} itti_statistic_message_t;
|
||||
|
||||
static itti_desc_t itti_queue;
|
||||
static FILE *dump_file;
|
||||
|
||||
static int itti_dump_send_message(int sd, itti_queue_item_t *message);
|
||||
static int itti_dump_handle_new_connection(int sd, const char *xml_definition,
|
||||
uint32_t xml_definition_length);
|
||||
@@ -271,6 +272,20 @@ int itti_dump_queue_message(message_number_t message_number,
|
||||
STAILQ_INSERT_TAIL(&itti_queue.itti_message_queue, new, entry);
|
||||
itti_queue.itti_queue_last = new;
|
||||
|
||||
if (dump_file != NULL)
|
||||
{
|
||||
itti_socket_header_t header;
|
||||
|
||||
header.message_size = sizeof(itti_dump_message_t) + message_size;
|
||||
header.message_type = ITTI_DUMP_MESSAGE_TYPE;
|
||||
|
||||
fwrite (&header, sizeof(itti_socket_header_t), 1, dump_file);
|
||||
fwrite (&new->message_number, sizeof(new->message_number), 1, dump_file);
|
||||
fwrite (new->message_name, sizeof(new->message_name), 1, dump_file);
|
||||
fwrite (&new->data_size, sizeof(new->data_size), 1, dump_file);
|
||||
fwrite (new->data, new->data_size, 1, dump_file);
|
||||
}
|
||||
|
||||
/* Release the mutex */
|
||||
pthread_mutex_unlock(&itti_queue.queue_mutex);
|
||||
|
||||
@@ -500,10 +515,31 @@ int itti_dump_handle_new_connection(int sd, const char *xml_definition, uint32_t
|
||||
return 0;
|
||||
}
|
||||
|
||||
int itti_dump_init(const char * const messages_definition_xml)
|
||||
int itti_dump_init(const char * const messages_definition_xml, const char * const dump_file_name)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (dump_file_name != NULL)
|
||||
{
|
||||
dump_file = fopen(dump_file_name, "w");
|
||||
|
||||
if (dump_file == NULL)
|
||||
{
|
||||
ITTI_ERROR("can not open dump file \"%s\" (%d:%s)\n", dump_file_name, errno, strerror(errno));
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t message_size = strlen(messages_definition_xml);
|
||||
itti_socket_header_t header;
|
||||
|
||||
header.message_size = sizeof(itti_dump_message_t) + message_size;
|
||||
header.message_type = ITTI_DUMP_XML_DEFINITION;
|
||||
|
||||
fwrite (&header, sizeof(itti_socket_header_t), 1, dump_file);
|
||||
fwrite (messages_definition_xml, message_size, 1, dump_file);
|
||||
}
|
||||
}
|
||||
|
||||
memset(&itti_queue, 0, sizeof(itti_desc_t));
|
||||
|
||||
pthread_mutex_init(&itti_queue.queue_mutex, NULL);
|
||||
|
||||
@@ -31,11 +31,9 @@
|
||||
#ifndef INTERTASK_INTERFACE_DUMP_H_
|
||||
#define INTERTASK_INTERFACE_DUMP_H_
|
||||
|
||||
int itti_dump_queue_message(message_number_t message_number,
|
||||
MessageDef *message_p,
|
||||
const char *message_name,
|
||||
const uint32_t message_size);
|
||||
int itti_dump_queue_message(message_number_t message_number, MessageDef *message_p, const char *message_name,
|
||||
const uint32_t message_size);
|
||||
|
||||
int itti_dump_init(const char * const messages_definition_xml);
|
||||
int itti_dump_init(const char * const messages_definition_xml, const char * const dump_file_name);
|
||||
|
||||
#endif /* INTERTASK_INTERFACE_DUMP_H_ */
|
||||
|
||||
@@ -79,9 +79,9 @@ const message_info_t messages_info[] = {
|
||||
* \param threads_name Pointer on the threads name information as created by this include file
|
||||
* \param messages_info Pointer on messages information as created by this include file
|
||||
**/
|
||||
int itti_init(thread_id_t thread_max, MessagesIds messages_id_max,
|
||||
const char * const *threads_name, const message_info_t *messages_info,
|
||||
const char * const messages_definition_xml);
|
||||
int itti_init(thread_id_t thread_max, MessagesIds messages_id_max, const char * const *threads_name,
|
||||
const message_info_t *messages_info, const char * const messages_definition_xml,
|
||||
const char * const dump_file_name);
|
||||
|
||||
#endif /* INTERTASK_INTERFACE_INIT_H_ */
|
||||
/* @} */
|
||||
|
||||
Reference in New Issue
Block a user