Integrated MAC DL config progran message to agent
This commit is contained in:
@@ -46,9 +46,10 @@ enb_agent_message_decoded_callback messages_callback[][3] = {
|
|||||||
{enb_agent_echo_reply, 0, 0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_ECHO_REQUEST_MSG*/
|
{enb_agent_echo_reply, 0, 0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_ECHO_REQUEST_MSG*/
|
||||||
{0, 0, 0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_ECHO_REPLY_MSG*/ //Must add handler when receiving echo reply
|
{0, 0, 0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_ECHO_REPLY_MSG*/ //Must add handler when receiving echo reply
|
||||||
{enb_agent_mac_handle_stats, 0, 0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_STATS_REQUEST_MSG*/
|
{enb_agent_mac_handle_stats, 0, 0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_STATS_REQUEST_MSG*/
|
||||||
{0,0,0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_STATS_REPLY_MSG*/
|
{0, 0, 0}, /*PROTOCOL__PROGRAN_MESSAGE__MSG_STATS_REPLY_MSG*/
|
||||||
{0,0,0}, /*PROTOCOK__PROGRAN_MESSAGE__MSG_SF_TRIGGER_MSG*/
|
{0, 0, 0}, /*PROTOCOK__PROGRAN_MESSAGE__MSG_SF_TRIGGER_MSG*/
|
||||||
{0,0,0}, /*SR_INFO*/
|
{0, 0, 0}, /*SR_INFO*/
|
||||||
|
{0, 0, 0}, /*DL_MAC_CONFIG*/
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -60,6 +61,7 @@ enb_agent_message_destruction_callback message_destruction_callback[] = {
|
|||||||
enb_agent_mac_destroy_stats_reply,
|
enb_agent_mac_destroy_stats_reply,
|
||||||
enb_agent_mac_destroy_sf_trigger,
|
enb_agent_mac_destroy_sf_trigger,
|
||||||
enb_agent_mac_destroy_sr_info,
|
enb_agent_mac_destroy_sr_info,
|
||||||
|
enb_agent_mac_destroy_dl_config,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *enb_agent_direction2String[] = {
|
static const char *enb_agent_direction2String[] = {
|
||||||
|
|||||||
@@ -45,6 +45,9 @@
|
|||||||
/*Flags showing if a mac agent has already been registered*/
|
/*Flags showing if a mac agent has already been registered*/
|
||||||
unsigned int mac_agent_registered[NUM_MAX_ENB];
|
unsigned int mac_agent_registered[NUM_MAX_ENB];
|
||||||
|
|
||||||
|
/*Array containing the Agent-MAC interfaces*/
|
||||||
|
AGENT_MAC_xface *agent_mac_xface[NUM_MAX_ENB];
|
||||||
|
|
||||||
int enb_agent_mac_handle_stats(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg){
|
int enb_agent_mac_handle_stats(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg){
|
||||||
|
|
||||||
// TODO: Must deal with sanitization of input
|
// TODO: Must deal with sanitization of input
|
||||||
@@ -991,6 +994,43 @@ int enb_agent_mac_destroy_sf_trigger(Protocol__ProgranMessage *msg) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int enb_agent_mac_create_empty_dl_config(mid_t mod_id, Protocol__ProgranMessage **msg) {
|
||||||
|
|
||||||
|
int xid = 0;
|
||||||
|
Protocol__PrpHeader *header;
|
||||||
|
if (prp_create_header(xid, PROTOCOL__PRP_TYPE__PRPT_DL_MAC_CONFIG, &header) != 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
Protocol__PrpDlMacConfig *dl_mac_config_msg;
|
||||||
|
dl_mac_config_msg = malloc(sizeof(Protocol__PrpDlMacConfig));
|
||||||
|
if (dl_mac_config_msg == NULL) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
protocol__prp_dl_mac_config__init(dl_mac_config_msg);
|
||||||
|
|
||||||
|
dl_mac_config_msg->header = header;
|
||||||
|
dl_mac_config_msg->has_sfn_sf = 1;
|
||||||
|
dl_mac_config_msg->sfn_sf = get_sfn_sf(mod_id);
|
||||||
|
|
||||||
|
*msg = malloc(sizeof(Protocol__ProgranMessage));
|
||||||
|
if(*msg == NULL)
|
||||||
|
goto error;
|
||||||
|
protocol__progran_message__init(*msg);
|
||||||
|
(*msg)->msg_case = PROTOCOL__PROGRAN_MESSAGE__MSG_DL_MAC_CONFIG_MSG;
|
||||||
|
(*msg)->msg_dir = PROTOCOL__PROGRAN_DIRECTION__INITIATING_MESSAGE;
|
||||||
|
(*msg)->dl_mac_config_msg = dl_mac_config_msg;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int enb_agent_mac_destroy_dl_config(Protocol__ProgranMessage *msg) {
|
||||||
|
//TODO: De-allocate the memory of the message
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************
|
/***********************************************
|
||||||
* eNB agent - technology mac API implementation
|
* eNB agent - technology mac API implementation
|
||||||
***********************************************/
|
***********************************************/
|
||||||
@@ -1109,7 +1149,7 @@ void enb_agent_send_update_mac_stats(mid_t mod_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int enb_agent_register_mac_xface(mid_t mod_id, AGENT_MAC_xface *xface) {
|
int enb_agent_register_mac_xface(mid_t mod_id, AGENT_MAC_xface *xface) {
|
||||||
if (!mac_agent_registered[mod_id]) {
|
if (mac_agent_registered[mod_id]) {
|
||||||
LOG_E(MAC, "MAC agent for eNB %d is already registered\n", mod_id);
|
LOG_E(MAC, "MAC agent for eNB %d is already registered\n", mod_id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -1119,22 +1159,23 @@ int enb_agent_register_mac_xface(mid_t mod_id, AGENT_MAC_xface *xface) {
|
|||||||
xface->enb_agent_send_sf_trigger = enb_agent_send_sf_trigger;
|
xface->enb_agent_send_sf_trigger = enb_agent_send_sf_trigger;
|
||||||
xface->enb_agent_send_update_mac_stats = enb_agent_send_update_mac_stats;
|
xface->enb_agent_send_update_mac_stats = enb_agent_send_update_mac_stats;
|
||||||
|
|
||||||
|
|
||||||
mac_agent_registered[mod_id] = 1;
|
mac_agent_registered[mod_id] = 1;
|
||||||
|
agent_mac_xface[mod_id] = xface;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int enb_agent_unregister_mac_xface(mid_t mod_id, AGENT_MAC_xface *xface) {
|
int enb_agent_unregister_mac_xface(mid_t mod_id, AGENT_MAC_xface *xface) {
|
||||||
|
|
||||||
if(mac_agent_registered[mod_id]) {
|
|
||||||
LOG_E(MAC, "MAC agent for eNB %d is already registered\n", mod_id);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//xface->agent_ctxt = NULL;
|
//xface->agent_ctxt = NULL;
|
||||||
xface->enb_agent_send_sr_info = NULL;
|
xface->enb_agent_send_sr_info = NULL;
|
||||||
xface->enb_agent_send_sf_trigger = NULL;
|
xface->enb_agent_send_sf_trigger = NULL;
|
||||||
|
xface->enb_agent_send_update_mac_stats = NULL;
|
||||||
|
|
||||||
|
mac_agent_registered[mod_id] = 0;
|
||||||
|
agent_mac_xface[mod_id] = NULL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,6 +94,10 @@ int enb_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Progran
|
|||||||
|
|
||||||
int enb_agent_mac_destroy_sf_trigger(Protocol__ProgranMessage *msg);
|
int enb_agent_mac_destroy_sf_trigger(Protocol__ProgranMessage *msg);
|
||||||
|
|
||||||
|
int enb_agent_mac_create_empty_dl_config(mid_t mod_id, Protocol__ProgranMessage **msg);
|
||||||
|
|
||||||
|
int enb_agent_mac_destroy_dl_config(Protocol__ProgranMessage *msg);
|
||||||
|
|
||||||
|
|
||||||
/**********************************
|
/**********************************
|
||||||
* eNB agent - technology mac API
|
* eNB agent - technology mac API
|
||||||
|
|||||||
Reference in New Issue
Block a user