Commit a1c1c0c8 authored by Cedric Roux's avatar Cedric Roux

starting FAPI integration into OAI

parent 115d0c6b
......@@ -922,6 +922,7 @@ set (MAC_SRC
${MAC_DIR}/eNB_scheduler_RA.c
${MAC_DIR}/pre_processor.c
${MAC_DIR}/config.c
${MAC_DIR}/minifapi.c
)
set (ENB_APP_SRC
......
#ifndef FF_MAC_CALLBACK_H
#define FF_MAC_CALLBACK_H
/* these are the callback function types from the scheduler to openair */
/* sched */
typedef void (SchedDlConfigInd_callback)(void *callback_data, const struct SchedDlConfigIndParameters *params);
typedef void (SchedUlConfigInd_callback)(void *callback_data, const struct SchedUlConfigIndParameters *params);
/* csched */
typedef void (CschedCellConfigCnf_callback)(void *callback_data, const struct CschedCellConfigCnfParameters *params);
typedef void (CschedUeConfigCnf_callback)(void *callback_data, const struct CschedUeConfigCnfParameters *params);
typedef void (CschedLcConfigCnf_callback)(void *callback_data, const struct CschedLcConfigCnfParameters *params);
typedef void (CschedLcReleaseCnf_callback)(void *callback_data, const struct CschedLcReleaseCnfParameters *params);
typedef void (CschedUeReleaseCnf_callback)(void *callback_data, const struct CschedUeReleaseCnfParameters *params);
typedef void (CschedUeConfigUpdateInd_callback)(void *callback_data, const struct CschedUeConfigUpdateIndParameters *params);
typedef void (CschedCellConfigUpdateInd_callback)(void *callback_data, const struct CschedCellConfigUpdateIndParameters *params);
#endif /* FF_MAC_CALLBACK_H */
......@@ -74,7 +74,11 @@ extern "C" {
#define MAX_SR_LIST 30
#define MAX_MAC_CE_LIST 30
#define MAX_NUM_CCs 2
#ifndef MAX_NUM_CCs
#error MAX_NUM_CCs not defined
#endif
//#define MAX_NUM_CCs 2
enum Result_e
{
......
......@@ -255,16 +255,11 @@ struct CschedUeReleaseReqParameters
/**
* \brief CSCHED_CELL_CONFIG_REQ
*/
void CschedCellConfigReq (const struct CschedCellConfigReqParameters *params);
void CschedUeConfigReq (const struct CschedUeConfigReqParameters *params);
void CschedLcConfigReq (const struct CschedLcConfigReqParameters *params);
void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters *params);
void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters *params);
void CschedCellConfigReq(void *, const struct CschedCellConfigReqParameters *params);
void CschedUeConfigReq(void *, const struct CschedUeConfigReqParameters *params);
void CschedLcConfigReq(void *, const struct CschedLcConfigReqParameters *params);
void CschedLcReleaseReq(void *, const struct CschedLcReleaseReqParameters *params);
void CschedUeReleaseReq(void *, const struct CschedUeReleaseReqParameters *params);
/**
* Parameters of the API primitives
......@@ -377,19 +372,16 @@ struct CschedCellConfigUpdateIndParameters
// (See 4.1 for description of the primitives)
//
void CschedCellConfigCnf (const struct CschedCellConfigCnfParameters *params);
void CschedUeConfigCnf (const struct CschedUeConfigCnfParameters *params);
void CschedLcConfigCnf (const struct CschedLcConfigCnfParameters *params);
void CschedLcReleaseCnf (const struct CschedLcReleaseCnfParameters *params);
void CschedUeReleaseCnf (const struct CschedUeReleaseCnfParameters *params);
void CschedUeConfigUpdateInd (const struct CschedUeConfigUpdateIndParameters *params);
void CschedCellConfigUpdateInd (const struct CschedCellConfigUpdateIndParameters *params);
#if 0
/* not used - the scheduler has callbacks for those */
void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters *params);
void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters *params);
void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters *params);
void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters *params);
void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters *params);
void CschedUeConfigUpdateInd(const struct CschedUeConfigUpdateIndParameters *params);
void CschedCellConfigUpdateInd(const struct CschedCellConfigUpdateIndParameters *params);
#endif
#if defined (__cplusplus)
}
......
#ifndef FF_MAC_INIT_H
#define FF_MAC_INIT_H
#if defined (__cplusplus)
extern "C" {
#endif
#include "ff-mac-callback.h"
/* this function is called to create and initialize a scheduler */
void *SchedInit(
void *callback_data,
SchedDlConfigInd_callback *SchedDlConfigInd,
SchedUlConfigInd_callback *SchedUlConfigInd,
CschedCellConfigCnf_callback *CschedCellConfigCnf,
CschedUeConfigCnf_callback *CschedUeConfigCnf,
CschedLcConfigCnf_callback *CschedLcConfigCnf,
CschedLcReleaseCnf_callback *CschedLcReleaseCnf,
CschedUeReleaseCnf_callback *CschedUeReleaseCnf,
CschedUeConfigUpdateInd_callback *CschedUeConfigUpdateInd,
CschedCellConfigUpdateInd_callback *CschedCellConfigUpdateInd);
#if defined (__cplusplus)
}
#endif
#endif /* FF_MAC_INIT_H */
......@@ -204,27 +204,17 @@ struct SchedUlCqiInfoReqParameters
// (See 4.2 for description of the primitives)
//
void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters *params);
void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters *params);
void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters *params);
void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters *params);
void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters *params);
void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters *params);
void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters *params);
void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters *params);
void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters *params);
void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters *params);
void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters *params);
void SchedDlRlcBufferReq(void *, const struct SchedDlRlcBufferReqParameters *params);
void SchedDlPagingBufferReq(void *, const struct SchedDlPagingBufferReqParameters *params);
void SchedDlMacBufferReq(void *, const struct SchedDlMacBufferReqParameters *params);
void SchedDlTriggerReq(void *, const struct SchedDlTriggerReqParameters *params);
void SchedDlRachInfoReq(void *, const struct SchedDlRachInfoReqParameters *params);
void SchedDlCqiInfoReq(void *, const struct SchedDlCqiInfoReqParameters *params);
void SchedUlTriggerReq(void *, const struct SchedUlTriggerReqParameters *params);
void SchedUlNoiseInterferenceReq(void *, const struct SchedUlNoiseInterferenceReqParameters *params);
void SchedUlSrInfoReq(void *, const struct SchedUlSrInfoReqParameters *params);
void SchedUlMacCtrlInfoReq(void *, const struct SchedUlMacCtrlInfoReqParameters *params);
void SchedUlCqiInfoReq(void *, const struct SchedUlCqiInfoReqParameters *params);
/**
* Parameters of the API primitives
......@@ -271,9 +261,11 @@ struct SchedUlConfigIndParameters
// (See 4.2 for description of the primitives)
//
void SchedDlConfigInd (const struct SchedDlConfigIndParameters* params);
void SchedUlConfigInd (const struct SchedUlConfigIndParameters* params);
#if 0
/* not used - the scheduler has callbacks for those */
void SchedDlConfigInd(const struct SchedDlConfigIndParameters* params);
void SchedUlConfigInd(const struct SchedUlConfigIndParameters* params);
#endif
#if defined (__cplusplus)
}
......
/* this is a very primitive FAPI scheduler
* it was done to develop the eNodeB side of FAPI
* only one UE supported, MCS always 4, 25 RBs, 1 CC
* and many other unrealistic assumptions
*/
#include "ff-mac-sched-sap.h"
#include "ff-mac-csched-sap.h"
#include "ff-mac-init.h"
#include "ff-mac-callback.h"
#include <stdlib.h>
#include <stdio.h>
struct scheduler {
void *callback_data;
SchedDlConfigInd_callback *SchedDlConfigInd;
SchedUlConfigInd_callback *SchedUlConfigInd;
CschedCellConfigCnf_callback *CschedCellConfigCnf;
CschedUeConfigCnf_callback *CschedUeConfigCnf;
CschedLcConfigCnf_callback *CschedLcConfigCnf;
CschedLcReleaseCnf_callback *CschedLcReleaseCnf;
CschedUeReleaseCnf_callback *CschedUeReleaseCnf;
CschedUeConfigUpdateInd_callback *CschedUeConfigUpdateInd;
CschedCellConfigUpdateInd_callback *CschedCellConfigUpdateInd;
};
void *SchedInit(
void *callback_data,
SchedDlConfigInd_callback *SchedDlConfigInd,
SchedUlConfigInd_callback *SchedUlConfigInd,
CschedCellConfigCnf_callback *CschedCellConfigCnf,
CschedUeConfigCnf_callback *CschedUeConfigCnf,
CschedLcConfigCnf_callback *CschedLcConfigCnf,
CschedLcReleaseCnf_callback *CschedLcReleaseCnf,
CschedUeReleaseCnf_callback *CschedUeReleaseCnf,
CschedUeConfigUpdateInd_callback *CschedUeConfigUpdateInd,
CschedCellConfigUpdateInd_callback *CschedCellConfigUpdateInd)
{
struct scheduler *ret;
printf("minifapi:%s:%d: start\n", __FUNCTION__, __LINE__);
ret = calloc(1, sizeof(struct scheduler));
if (ret == NULL) {
printf("minifapi:%s:%d: memory allocation error\n", __FUNCTION__, __LINE__);
return NULL;
}
ret->callback_data = callback_data;
ret->SchedDlConfigInd = SchedDlConfigInd;
ret->SchedUlConfigInd = SchedUlConfigInd;
ret->CschedCellConfigCnf = CschedCellConfigCnf;
ret->CschedUeConfigCnf = CschedUeConfigCnf;
ret->CschedLcConfigCnf = CschedLcConfigCnf;
ret-> CschedLcReleaseCnf = CschedLcReleaseCnf;
ret->CschedUeReleaseCnf = CschedUeReleaseCnf;
ret->CschedUeConfigUpdateInd = CschedUeConfigUpdateInd;
ret->CschedCellConfigUpdateInd = CschedCellConfigUpdateInd;
printf("minifapi:%s:%d: done\n", __FUNCTION__, __LINE__);
return ret;
}
/*************** SCHED functions ***************/
void SchedDlRlcBufferReq(void *_sched, const struct SchedDlRlcBufferReqParameters *params)
{
}
void SchedDlPagingBufferReq(void *_sched, const struct SchedDlPagingBufferReqParameters *params)
{
}
void SchedDlMacBufferReq(void *_sched, const struct SchedDlMacBufferReqParameters *params)
{
}
void SchedDlTriggerReq(void *_sched, const struct SchedDlTriggerReqParameters *params)
{
}
void SchedDlRachInfoReq(void *_sched, const struct SchedDlRachInfoReqParameters *params)
{
}
void SchedDlCqiInfoReq(void *_sched, const struct SchedDlCqiInfoReqParameters *params)
{
}
void SchedUlTriggerReq(void *_sched, const struct SchedUlTriggerReqParameters *params)
{
}
void SchedUlNoiseInterferenceReq(void *_sched, const struct SchedUlNoiseInterferenceReqParameters *params)
{
}
void SchedUlSrInfoReq(void *_sched, const struct SchedUlSrInfoReqParameters *params)
{
}
void SchedUlMacCtrlInfoReq(void *_sched, const struct SchedUlMacCtrlInfoReqParameters *params)
{
}
void SchedUlCqiInfoReq(void *_sched, const struct SchedUlCqiInfoReqParameters *params)
{
}
/*************** CSCHED functions ***************/
void CschedCellConfigReq(void *_sched, const struct CschedCellConfigReqParameters *params)
{
}
void CschedUeConfigReq(void *_sched, const struct CschedUeConfigReqParameters *params)
{
}
void CschedLcConfigReq(void *_sched, const struct CschedLcConfigReqParameters *params)
{
}
void CschedLcReleaseReq(void *_sched, const struct CschedLcReleaseReqParameters *params)
{
}
void CschedUeReleaseReq(void *_sched, const struct CschedUeReleaseReqParameters *params)
{
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment