mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
Add the E3 agent lifecycle on top of libe3: configuration mapping, agent creation/init/start, dApp report and status-change handlers, and xApp control and subscription-query helpers. Wire e3_init() and e3_destroy() into nr-softmodem under the E3_AGENT guard. The agent registers no concrete service models: service models (such as spectrum sensing) live in their own modules and register themselves, keeping the framework decoupled from any specific use case. Signed-off-by: Andrea Lacava <thecave003@gmail.com>
61 lines
1.2 KiB
C
61 lines
1.2 KiB
C
/*
|
|
* SPDX-License-Identifier: LicenseRef-CSSL-1.0
|
|
*/
|
|
|
|
#ifndef E3_AGENT_H
|
|
#define E3_AGENT_H
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <pthread.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <libe3/c_api.h>
|
|
|
|
#include "config/e3_config.h"
|
|
|
|
#ifdef E2_AGENT
|
|
#include "ran_func_dapp_extern.h"
|
|
#endif
|
|
|
|
typedef struct {
|
|
e3_agent_handle_t *agent;
|
|
e3_service_model_handle_t **service_models;
|
|
size_t num_service_models;
|
|
} e3_agent_global_t;
|
|
|
|
typedef struct {
|
|
uint32_t dapp_id;
|
|
uint32_t *e3_ran_func_ids;
|
|
size_t num_e3_ran_funcs;
|
|
} e3_dapp_info_t;
|
|
|
|
typedef struct {
|
|
e3_dapp_info_t *dapps;
|
|
size_t num_dapps;
|
|
} e3_dapp_subscription_map_t;
|
|
|
|
extern e3_agent_global_t e3;
|
|
|
|
int e3_init();
|
|
int e3_destroy();
|
|
|
|
int e3_send_xapp_control(uint32_t dapp_id, uint32_t ran_function_id, const uint8_t *data, size_t len);
|
|
|
|
/**
|
|
* @brief Get all connected dApps and their RAN function subscriptions.
|
|
*
|
|
* Caller must free the result with e3_free_dapp_subscription_map().
|
|
*
|
|
* @return populated map on success, {NULL, 0} on error or if no dApps
|
|
*/
|
|
e3_dapp_subscription_map_t e3_get_dapp_subscription_map(void);
|
|
|
|
/**
|
|
* @brief Free a subscription map returned by e3_get_dapp_subscription_map().
|
|
*/
|
|
void e3_free_dapp_subscription_map(e3_dapp_subscription_map_t *map);
|
|
|
|
#endif // E3_AGENT_H
|