diff --git a/openair2/ENB_APP/enb_agent_net_comm.c b/openair2/ENB_APP/enb_agent_net_comm.c index 096779f2610d4d5ecc6d76b1c8eacc2160f49ae5..5c4544ad634cee165faa8ad331274850aaaea4c0 100644 --- a/openair2/ENB_APP/enb_agent_net_comm.c +++ b/openair2/ENB_APP/enb_agent_net_comm.c @@ -37,17 +37,17 @@ #include "enb_agent_net_comm.h" #include "log.h" -enb_agent_channel_t *agent_channel[ENB_AGENT_MAX]; +enb_agent_channel_t *agent_channel[NUM_MAX_ENB_AGENT][ENB_AGENT_MAX]; enb_agent_channel_instance_t channel_instance; int enb_agent_channel_id = 0; -int enb_agent_msg_send(void *data, int size, int priority, agent_id_t agent_id) { +int enb_agent_msg_send(mid_t mod_id, agent_id_t agent_id, void *data, int size, int priority) { /*Check if agent id is valid*/ if (agent_id >= ENB_AGENT_MAX || agent_id < 0) { goto error; } enb_agent_channel_t *channel; - channel = agent_channel[agent_id]; + channel = agent_channel[mod_id][agent_id]; /*Check if agent has a channel registered*/ if (channel == NULL) { @@ -61,13 +61,13 @@ int enb_agent_msg_send(void *data, int size, int priority, agent_id_t agent_id) return -1; } -int enb_agent_msg_recv(void **data, int *size, int *priority, agent_id_t agent_id) { +int enb_agent_msg_recv(mid_t mod_id, agent_id_t agent_id, void **data, int *size, int *priority) { /*Check if agent id is valid*/ if (agent_id >= ENB_AGENT_MAX || agent_id < 0) { goto error; } enb_agent_channel_t *channel; - channel = agent_channel[agent_id]; + channel = agent_channel[mod_id][agent_id]; /*Check if agent has a channel registered*/ if (channel == NULL) { @@ -81,7 +81,7 @@ int enb_agent_msg_recv(void **data, int *size, int *priority, agent_id_t agent_i return -1; } -int enb_agent_register_channel(enb_agent_channel_t *channel, agent_id_t agent_id) { +int enb_agent_register_channel(mid_t mod_id, enb_agent_channel_t *channel, agent_id_t agent_id) { int i; if (channel == NULL) { @@ -90,23 +90,23 @@ int enb_agent_register_channel(enb_agent_channel_t *channel, agent_id_t agent_id if (agent_id == ENB_AGENT_MAX) { for (i = 0; i < ENB_AGENT_MAX; i++) { - agent_channel[i] = channel; + agent_channel[mod_id][i] = channel; } } else { - agent_channel[agent_id] = channel; + agent_channel[mod_id][agent_id] = channel; } return 0; } -void enb_agent_unregister_channel(agent_id_t agent_id) { +void enb_agent_unregister_channel(mid_t mod_id, agent_id_t agent_id) { int i; if (agent_id == ENB_AGENT_MAX) { for (i = 0; i < ENB_AGENT_MAX; i++) { - agent_channel[i] = NULL; + agent_channel[mod_id][i] = NULL; } } else { - agent_channel[agent_id] = NULL; + agent_channel[mod_id][agent_id] = NULL; } } @@ -132,7 +132,7 @@ int enb_agent_create_channel(void *channel_info, } int enb_agent_destroy_channel(int channel_id) { - int i; + int i, j; /*Check to see if channel exists*/ struct enb_agent_channel_s *e = NULL; @@ -146,10 +146,12 @@ int enb_agent_destroy_channel(int channel_id) { } /*Unregister the channel from all agents*/ - for (i = 0; i < ENB_AGENT_MAX; i++) { - if (agent_channel[i] != NULL) { - if (agent_channel[i]->channel_id == e->channel_id) { - agent_channel[i] == NULL; + for (i = 0; i < NUM_MAX_ENB_AGENT; i++) { + for (j = 0; j < ENB_AGENT_MAX; j++) { + if (agent_channel[i][j] != NULL) { + if (agent_channel[i][j]->channel_id == e->channel_id) { + agent_channel[i][j] == NULL; + } } } } @@ -163,13 +165,15 @@ int enb_agent_destroy_channel(int channel_id) { } err_code_t enb_agent_init_channel_container(void) { - int i; + int i, j; LOG_I(ENB_AGENT, "init RB tree for channel container\n"); RB_INIT(&channel_instance.enb_agent_head); - - for (i = 0; i < ENB_AGENT_MAX; i++) { - agent_channel[i] == NULL; + + for (i = 0; i < NUM_MAX_ENB_AGENT; i++) { + for (j = 0; j < ENB_AGENT_MAX; j++) { + agent_channel[i][j] == NULL; + } } return 0; diff --git a/openair2/ENB_APP/enb_agent_net_comm.h b/openair2/ENB_APP/enb_agent_net_comm.h index 50237379d4efebb04108a12533b770cd7843aac3..ab42bdc34f138ec8892f9796f93b873bbf5ae82a 100644 --- a/openair2/ENB_APP/enb_agent_net_comm.h +++ b/openair2/ENB_APP/enb_agent_net_comm.h @@ -56,16 +56,16 @@ typedef struct enb_agent_channel_instance_s{ } enb_agent_channel_instance_t; /*Send and receive messages using the channel registered for a specific agent*/ -int enb_agent_msg_send(void *data, int size, int priority, agent_id_t agent_id); +int enb_agent_msg_send(mid_t mod_id, agent_id_t agent_id, void *data, int size, int priority); -int enb_agent_msg_recv(void **data, int *size, int *priority, agent_id_t agent_id); +int enb_agent_msg_recv(mid_t mod_id, agent_id_t agent_id, void **data, int *size, int *priority); /*Register a channel to an agent. Use ENB_AGENT_MAX to register the *same channel to all agents*/ -int enb_agent_register_channel(enb_agent_channel_t *channel, agent_id_t agent_id); +int enb_agent_register_channel(mid_t mod_id, enb_agent_channel_t *channel, agent_id_t agent_id); /*Unregister the current channel of an agent. Use ENB_AGENT_MAX to unregister all channels*/ -void enb_agent_unregister_channel(agent_id_t agent_id); +void enb_agent_unregister_channel(mid_t mod_id, agent_id_t agent_id); /*Create a new channel. Returns the id of the new channel or negative number otherwise*/ int enb_agent_create_channel(void *channel_info,