Commit a1403400 authored by Florian Kaltenberger's avatar Florian Kaltenberger

adding header files from old svn branch

parent 33325d46
/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2015 Eurecom
OpenAirInterface is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenAirInterface is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
see <http://www.gnu.org/licenses/>.
Contact Information
OpenAirInterface Admin: openair_admin@eurecom.fr
OpenAirInterface Tech : openair_tech@eurecom.fr
OpenAirInterface Dev : openair4g-devel@eurecom.fr
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
/*! \file ff-mac-common.h
* \brief this is the implementation of the Femto Forum LTE MAC Scheduler Interface Specification v1.11
* \author Florian Kaltenberger
* \date March 2015
* \version 1.0
* \email: florian.kaltenberger@eurecom.fr
* @ingroup _mac
*/
#ifndef FF_MAC_COMMON_H
#define FF_MAC_COMMON_H
#include <stdint.h>
#include <stdbool.h>
/**
* Constants. See section 4.4
*/
#define MAX_SCHED_CFG_LIST 10
#define MAX_LC_LIST 10
#define MAX_RACH_LIST 30
#define MAX_DL_INFO_LIST 30
#define MAX_BUILD_DATA_LIST 30
#define MAX_BUILD_RAR_LIST 10
#define MAX_BUILD_BC_LIST 3
#define MAX_UL_INFO_LIST 30
#define MAX_DCI_LIST 30
#define MAX_PHICH_LIST 30
#define MAX_TB_LIST 2
#define MAX_RLC_PDU_LIST 30
#define MAX_NR_LCG 4
#define MAX_MBSFN_CONFIG 5
#define MAX_SI_MSG_LIST 32
#define MAX_SI_MSG_SIZE 65535
#define MAX_CQI_LIST 30
#define MAX_UE_SELECTED_SB 6
#define MAX_HL_SB 25
#define MAX_SINR_RB_LIST 100
#define MAX_SR_LIST 30
#define MAX_MAC_CE_LIST 30
#define MAX_NUM_CCs 2
enum Result_e
{
ff_SUCCESS,
ff_FAILURE
};
enum SetupRelease_e
{
ff_setup,
ff_release
};
enum CeBitmap_e
{
ff_TA = 1 << 0,
ff_DRX = 1 << 1,
ff_CR = 1 << 2,
/// activation/deactivation of CCs
ff_AD = 1 << 3
};
enum NormalExtended_e
{
ff_normal,
ff_extended
};
/**
* \brief See section 4.3.1 dlDciListElement
*/
struct DlDciListElement_s
{
uint16_t rnti;
uint32_t rbBitmap;
uint8_t rbShift;
uint8_t resAlloc;
uint16_t tbsSize[MAX_TB_LIST];
uint8_t mcs[MAX_TB_LIST];
uint8_t ndi[MAX_TB_LIST];
uint8_t rv[MAX_TB_LIST];
uint8_t cceIndex;
uint8_t aggrLevel;
uint8_t precodingInfo;
enum Format_e
{
ONE, ONE_A, ONE_B, ONE_C, ONE_D, TWO, TWO_A, TWO_B
} format;
uint8_t tpc;
uint8_t harqProcess;
uint8_t dai;
enum VrbFormat_e
{
VRB_DISTRIBUTED,
VRB_LOCALIZED
} vrbFormat;
bool tbSwap;
bool spsRelease;
bool pdcchOrder;
uint8_t preambleIndex;
uint8_t prachMaskIndex;
enum Ngap_e
{
GAP1, GAP2
} nGap;
uint8_t tbsIdx;
uint8_t dlPowerOffset;
uint8_t pdcchPowerOffset;
/// this is the DCI field (for potential cross carrier scheduling)
bool cifPresent;
uint8_t cif;
};
/**
* \brief See section 4.3.2 ulDciListElement
*/
struct UlDciListElement_s
{
uint16_t rnti;
uint8_t rbStart;
uint8_t rbLen;
uint16_t tbSize;
uint8_t mcs;
uint8_t ndi;
uint8_t cceIndex;
uint8_t aggrLevel;
uint8_t ueTxAntennaSelection;
bool hopping;
uint8_t n2Dmrs;
int8_t tpc;
bool cqiRequest;
uint8_t ulIndex;
uint8_t dai;
uint8_t freqHopping;
int8_t pdcchPowerOffset;
/// this is the DCI field (for potential cross carrier scheduling)
bool cifPresent;
uint8_t cif;
/// this is the carrier index where the DCI will be transmitted on
uint8_t carrierIndex;
};
/**
* \brief Base class for storing the values of vendor specific parameters
*/
struct VendorSpecificValue
{
uint32_t dummy;
/*to be extended*/
};
/**
* \brief See section 4.3.3 vendorSpecifiListElement
*/
struct VendorSpecificListElement_s
{
uint32_t type;
uint32_t length;
struct VendorSpecificValue *value;
};
/**
* \brief See section 4.3.4 logicalChannelConfigListElement
*/
struct LogicalChannelConfigListElement_s
{
uint8_t logicalChannelIdentity;
uint8_t logicalChannelGroup;
enum Direction_e
{
DIR_UL,
DIR_DL,
DIR_BOTH
} direction;
enum QosBearerType_e
{
QBT_NON_GBR,
QBT_GBR
} qosBearerType;
uint8_t qci;
uint64_t eRabMaximulBitrateUl;
uint64_t eRabMaximulBitrateDl;
uint64_t eRabGuaranteedBitrateUl;
uint64_t eRabGuaranteedBitrateDl;
};
/**
* \brief See section 4.3.6 rachListElement
*/
struct RachListElement_s
{
uint16_t rnti;
uint16_t estimatedSize;
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.7 phichListElement
*/
struct PhichListElement_s
{
uint16_t rnti;
enum Phich_e
{
ACK, NACK
} phich;
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.9 rlcPDU_ListElement
*/
struct RlcPduListElement_s
{
uint8_t logicalChannelIdentity;
uint16_t size;
};
/**
* \brief See section 4.3.8 builDataListElement
*/
struct BuildDataListElement_s
{
uint16_t rnti;
struct DlDciListElement_s dci;
/* This is an array of CeBitmap_e enum flags. If one wants for example to signal TA in 1st TB and DRX and AD in 2nd one should:
* ceBitmap[0] = ff_TA; ceBitmap[1] = ff_DRX | ff_AD; */
uint8_t ceBitmap[MAX_TB_LIST];
uint8_t nr_rlcPDU_List;
struct RlcPduListElement_s *rlcPduList[MAX_TB_LIST];
uint8_t carrierIndex;
/* Hex content of Activation/Deactivation MAC CE */
uint8_t activationDeactivationCE;
};
/**
* \brief See section 4.3.10 buildRARListElement
*/
struct BuildRarListElement_s
{
uint16_t rnti;
uint32_t grant;
struct DlDciListElement_s dci;
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.11 buildBroadcastListElement
*/
struct BuildBroadcastListElement_s
{
enum BroadcastType_e
{
ff_BCCH, ff_PCCH
} type;
uint8_t index;
struct DlDciListElement_s dci;
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.12 ulInfoListElement
*/
struct UlInfoListElement_s
{
uint16_t rnti;
uint16_t ulReception[MAX_LC_LIST+1];
enum ReceptionStatus_e
{
Ok, NotOk, NotValid
} receptionStatus;
uint8_t tpc;
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.13 srListElement
*/
struct SrListElement_s
{
uint16_t rnti;
};
/**
* \brief See section 4.3.15 macCEValue
*/
struct MacCeUlValue_u
{
uint8_t phr;
uint8_t crnti;
uint8_t bufferStatus[MAX_NR_LCG];
};
/**
* \brief See section 4.3.14 macCEListElement
*/
struct MacCeUlListElement_s
{
uint16_t rnti;
enum MacCeType_e
{
ff_BSR, ff_PHR, ff_CRNTI
} macCeType;
struct MacCeUlValue_u macCeValue;
};
/**
* \brief macCEDLValue (new)
*/
struct MacCeDlValue_u
{
// timing advance value is not included here as it is supposed to be filled in by the MAC (scheduler does not care)
// dtx CE does not have a value
// contention resolution value should also be filled in by the MAC and not by the scheduler
uint8_t ActicationDeactivation;
};
/**
* \brief macCEDLListElement (new)
*/
struct MacCeDlListElement_s
{
uint16_t rnti;
enum CeBitmap_e macCeType;
struct MacCeDlValue_u macCeValue;
};
/**
* \brief See section 4.3.16 drxConfig
*/
struct DrxConfig_s
{
uint8_t onDurationTimer;
uint16_t drxInactivityTimer;
uint16_t drxRetransmissionTimer;
uint16_t longDrxCycle;
uint16_t longDrxCycleStartOffset;
uint16_t shortDrxCycle;
uint8_t drxShortCycleTimer;
};
/**
* \brief See section 4.3.17 spsConfig
*/
struct SpsConfig_s
{
uint16_t semiPersistSchedIntervalUl;
uint16_t semiPersistSchedIntervalDl;
uint8_t numberOfConfSpsProcesses;
uint8_t n1PucchAnPersistentListSize;
uint16_t n1PucchAnPersistentList[4];
uint8_t implicitReleaseAfter;
};
/**
* \brief See section 4.3.18 srConfig
*/
struct SrConfig_s
{
enum SetupRelease_e action;
uint8_t schedInterval;
uint8_t dsrTransMax;
};
/**
* \brief See section 4.3.19 cqiConfig
*/
struct CqiConfig_s
{
enum SetupRelease_e action;
uint16_t cqiSchedInterval;
uint8_t riSchedInterval;
};
/**
* \brief See section 4.3.20 ueCapabilities
*/
struct UeCapabilities_s
{
bool halfDuplex;
bool intraSfHopping;
bool type2Sb1;
uint8_t ueCategory;
bool resAllocType1;
};
/**
* \brief See section 4.3.22 siMessageListElement
*/
struct SiMessageListElement_s
{
uint16_t periodicity;
uint16_t length;
};
/**
* \brief See section 4.3.21 siConfiguration
*/
struct SiConfiguration_s
{
uint16_t sfn;
uint16_t sib1Length;
uint8_t siWindowLength;
uint8_t nrSI_Message_List;
struct SiMessageListElement_s *siMessageList;
};
/**
* \brief See section 4.3.23 dlInfoListElement
*/
struct DlInfoListElement_s
{
uint16_t rnti;
uint8_t harqProcessId;
enum HarqStatus_e
{
ff_ACK, ff_NACK, ff_DTX
} harqStatus[MAX_TB_LIST];
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.28 bwPart
*/
struct BwPart_s
{
uint8_t bwPartIndex;
uint8_t sb;
uint8_t cqi;
};
/**
* \brief See section 4.3.27 higherLayerSelected
*/
struct HigherLayerSelected_s
{
uint8_t sbPmi;
uint8_t sbCqi[MAX_TB_LIST];
};
/**
* \brief See section 4.3.26 ueSelected
*/
struct UeSelected_s
{
uint8_t sbList[MAX_UE_SELECTED_SB];
uint8_t sbPmi;
uint8_t sbCqi[MAX_TB_LIST];
};
/**
* \brief See section 4.3.25 sbMeasResult
*/
struct SbMeasResult_s
{
struct UeSelected_s ueSelected;
struct HigherLayerSelected_s higherLayerSelected[MAX_HL_SB];
struct BwPart_s bwPart;
};
/**
* \brief See section 4.3.24 cqiListElement
*/
struct CqiListElement_s
{
uint16_t rnti;
uint8_t ri;
enum CqiType_e
{
P10, P11, P20, P21, A12, A22, A20, A30, A31
} cqiType;
uint8_t wbCqi[MAX_TB_LIST];
uint8_t wbPmi;
struct SbMeasResult_s sbMeasResult;
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.29 ulCQI
*/
struct UlCqi_s
{
uint16_t sinr[MAX_SINR_RB_LIST];
enum UlCqiType_e
{
ff_SRS,
ff_PUSCH,
ff_PUCCH_1,
ff_PUCCH_2,
ff_PRACH
} type;
uint8_t carrierIndex;
};
/**
* \brief See section 4.3.30 pagingInfoListElement
*/
struct PagingInfoListElement_s
{
uint8_t pagingIndex;
uint16_t pagingMessageSize;
uint8_t pagingSubframe;
uint8_t carrierIndex;
};
/**
* \brief Describes the SCell configuration.
*/
struct ScellConfig_s
{
/* Unique carrier identifier */
uint8_t carrierIndex;
/* Index of this SCell (RRC SCellIndex) */
uint8_t scellIndex;
/* Indicates if cross-carrier scheduling shall be used or not on the SCell */
bool useCrossCarrierScheduling;
/* Index of the cell responsible for delivering scheduling for this SCell */
uint8_t schedulingCellIndex;
/* Starting OFDM symbol of PDSCH data region for this SCell */
uint8_t pdschStart;
};
struct PdcchOfdmSymbolCountListElement_s
{
/* Unique carrier identifier */
uint8_t carrierIndex;
/* Size of PDCCH in OFDM symbols */
uint8_t pdcchOfdmSymbolCount;
};
#endif /* FF_MAC_COMMON_H */
/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2015 Eurecom
OpenAirInterface is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenAirInterface is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
see <http://www.gnu.org/licenses/>.
Contact Information
OpenAirInterface Admin: openair_admin@eurecom.fr
OpenAirInterface Tech : openair_tech@eurecom.fr
OpenAirInterface Dev : openair4g-devel@eurecom.fr
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
/*! \file ff-mac-csched-sap.h
* \brief this is the implementation of the Femto Forum LTE MAC Scheduler Interface Specification v1.11
* \author Florian Kaltenberger
* \date March 2015
* \version 1.0
* \email: florian.kaltenberger@eurecom.fr
* @ingroup _mac
*/
#ifndef FF_MAC_CSCHED_SAP_H
#define FF_MAC_CSCHED_SAP_H
#include <stdint.h>
#include <stdbool.h>
#include "ff-mac-common.h"
/**
* Parameters of the API primitives
*/
/**
* Parameters of the CSCHED_CELL_CONFIG_REQ primitive.
* See section 4.1.1 for a detailed description of the parameters.
*/
struct CschedCellConfigReqParameters
{
uint8_t nr_carriers;
struct CschedCellConfigReqParametersListElement* ccConfigList[MAX_NUM_CCs];
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
struct CschedCellConfigReqParametersListElement
{
uint8_t puschHoppingOffset;
enum HoppingMode_e
{
inter,
interintra
} hoppingMode;
uint8_t nSb;
enum PhichResource_e
{
PHICH_R_ONE_SIXTH,
PHICH_R_HALF,
PHICH_R_ONE,
PHICH_R_TWO
} phichResource;
enum NormalExtended_e phichDuration;
uint8_t initialNrOfPdcchOfdmSymbols;
struct SiConfiguration_s siConfiguration;
uint8_t ulBandwidth;
uint8_t dlBandwidth;
enum NormalExtended_e ulCyclicPrefixLength;
enum NormalExtended_e dlCyclicPrefixLength;
uint8_t antennaPortsCount;
enum DuplexMode_e
{
DTDD,
DFDD
} duplexMode;
uint8_t subframeAssignment;
uint8_t specialSubframePatterns;
uint8_t mbsfnSubframeConfigRfPeriod[MAX_MBSFN_CONFIG];
uint8_t mbsfnSubframeConfigRfOffset[MAX_MBSFN_CONFIG];
uint8_t mbsfnSubframeConfigSfAllocation[MAX_MBSFN_CONFIG];
uint8_t prachConfigurationIndex;
uint8_t prachFreqOffset;
uint8_t raResponseWindowSize;
uint8_t macContentionResolutionTimer;
uint8_t maxHarqMsg3Tx;
uint16_t n1PucchAn;
uint8_t deltaPucchShift;
uint8_t nrbCqi;
uint8_t ncsAn;
uint8_t srsSubframeConfiguration;
uint8_t srsSubframeOffset;
uint8_t srsBandwidthConfiguration;
bool srsMaxUpPts;
enum Enable64Qae
{
MOD_16QAM,
MOD_64QAM
} enable64Qam;
uint8_t carrierIndex;
};
/**
* Parameters of the CSCHED_UE_CONFIG_REQ primitive.
* See section 4.1.3 for a detailed description of the parameters.
*/
struct CschedUeConfigReqParameters
{
uint16_t rnti;
bool reconfigureFlag;
bool drxConfigPresent;
struct DrxConfig_s drxConfig;
uint16_t timeAlignmentTimer;
enum MeasGapConfigPattern_e
{
MGP_GP1,
MGP_GP2,
OFF
} measGapConfigPattern;
uint8_t measGapConfigSubframeOffset;
bool spsConfigPresent;
struct SpsConfig_s spsConfig;
bool srConfigPresent;
struct SrConfig_s srConfig;
bool cqiConfigPresent;
struct CqiConfig_s cqiConfig;
uint8_t transmissionMode;
uint64_t ueAggregatedMaximumBitrateUl;
uint64_t ueAggregatedMaximumBitrateDl;
struct UeCapabilities_s ueCapabilities;
enum OpenClosedLoop_e
{
noneloop,
openloop,
closedloop
} ueTransmitAntennaSelection;
bool ttiBundling;
uint8_t maxHarqTx;
uint8_t betaOffsetAckIndex;
uint8_t betaOffsetRiIndex;
uint8_t betaOffsetCqiIndex;
bool ackNackSrsSimultaneousTransmission;
bool simultaneousAckNackAndCqi;
enum RepMode_e
{
ff_rm12, ff_rm20, ff_rm22, ff_rm30, ff_rm31, ff_nonemode
} aperiodicCqiRepMode;
enum FeedbackMode_e
{
ff_bundling,
ff_multiplexing
} tddAckNackFeedbackMode;
uint8_t ackNackRepetitionFactor;
bool caSupport;
bool crossCarrierSchedSupport;
uint8_t pcellCarrierIndex;
uint8_t nr_scells;
struct ScellConfig_s* scellConfigList[MAX_NUM_CCs-1];
uint8_t scellDeactivationTimer;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_LC_CONFIG_REQ primitive.
* See section 4.1.5 for a detailed description of the parameters.
*/
struct CschedLcConfigReqParameters
{
uint16_t rnti;
bool reconfigureFlag;
uint8_t nr_logicalChannelConfigList;
struct LogicalChannelConfigListElement_s *logicalChannelConfigList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_LC_RELEASE_REQ primitive.
* See section 4.1.7 for a detailed description of the parameters.
*/
struct CschedLcReleaseReqParameters
{
uint16_t rnti;
uint8_t nr_logicalChannelIdendity;
uint8_t *logicalChannelIdentity;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_UE_RELEASE_REQ primitive.
* See section 4.1.9 for a detailed description of the parameters.
*/
struct CschedUeReleaseReqParameters
{
uint16_t rnti;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
//
// CSCHED - MAC Scheduler Control SAP primitives
// (See 4.1 for description of the primitives)
//
/**
* \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);
/**
* Parameters of the API primitives
*/
/**
* Parameters of the CSCHED_CELL_CONFIG_CNF primitive.
* See section 4.1.2 for a detailed description of the parameters.
*/
struct CschedCellConfigCnfParameters
{
enum Result_e result;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_UE_CONFIG_CNF primitive.
* See section 4.1.4 for a detailed description of the parameters.
*/
struct CschedUeConfigCnfParameters
{
uint16_t rnti;
enum Result_e result;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_LC_CONFIG_CNF primitive.
* See section 4.1.6 for a detailed description of the parameters.
*/
struct CschedLcConfigCnfParameters
{
uint16_t rnti;
enum Result_e result;
uint8_t nr_logicalChannelIdendity;
uint8_t *logicalChannelIdentity;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_LC_RELEASE_CNF primitive.
* See section 4.1.8 for a detailed description of the parameters.
*/
struct CschedLcReleaseCnfParameters
{
uint16_t rnti;
enum Result_e result;
uint8_t nr_logicalChannelIdendity;
uint8_t *logicalChannelIdentity;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_UE_RELEASE_CNF primitive.
* See section 4.1.10 for a detailed description of the parameters.
*/
struct CschedUeReleaseCnfParameters
{
uint16_t rnti;
enum Result_e result;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive.
* See section 4.1.11 for a detailed description of the parameters.
*/
struct CschedUeConfigUpdateIndParameters
{
uint16_t rnti;
uint8_t transmissionMode;
bool spsConfigPresent;
struct SpsConfig_s spsConfig;
bool srConfigPresent;
struct SrConfig_s srConfig;
bool cqiConfigPresent;
struct CqiConfig_s cqiConfig;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive.
* See section 4.1.12 for a detailed description of the parameters.
*/
struct CschedCellConfigUpdateIndParameters
{
uint8_t carrierIndex;
uint8_t prbUtilizationDl;
uint8_t prbUtilizationUl;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
//
// CSCHED - MAC Scheduler Control SAP primitives
// (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);
#endif /* FF_MAC_CSCHED_SAP_H */
/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2015 Eurecom
OpenAirInterface is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenAirInterface is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
see <http://www.gnu.org/licenses/>.
Contact Information
OpenAirInterface Admin: openair_admin@eurecom.fr
OpenAirInterface Tech : openair_tech@eurecom.fr
OpenAirInterface Dev : openair4g-devel@eurecom.fr
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
/*! \file ff-mac-sched-sap.h
* \brief this is the implementation of the Femto Forum LTE MAC Scheduler Interface Specification v1.11
* \author Florian Kaltenberger
* \date March 2015
* \version 1.0
* \email: florian.kaltenberger@eurecom.fr
* @ingroup _mac
*/
#ifndef FF_MAC_SCHED_SAP_H
#define FF_MAC_SCHED_SAP_H
#include <stdint.h>
#include <stdbool.h>
#include "ff-mac-common.h"
/**
* Parameters of the API primitives
*/
/**
* Parameters of the SCHED_DL_RLC_BUFFER_REQ primitive.
* See section 4.2.1 for a detailed description of the parameters.
*/
struct SchedDlRlcBufferReqParameters
{
uint16_t rnti;
uint8_t logicalChannelIdentity;
uint32_t rlcTransmissionQueueSize;
uint16_t rlcTransmissionQueueHolDelay;
uint32_t rlcRetransmissionQueueSize;
uint16_t rlcRetransmissionHolDelay;
uint16_t rlcStatusPduSize;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_DL_PAGING_BUFFER_REQ primitive.
* See section 4.2.2 for a detailed description of the parameters.
*/
struct SchedDlPagingBufferReqParameters
{
uint16_t rnti;
uint8_t nr_pagingInfoList;
struct PagingInfoListElement_s *pagingInfoList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_DL_MAC_BUFFER_REQ primitive.
* See section 4.2.3 for a detailed description of the parameters.
*/
struct SchedDlMacBufferReqParameters
{
uint16_t rnti;
uint8_t nr_macCEDL_List;
struct MacCeDlListElement_s *macCeDlList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_DL_TRIGGER_REQ primitive.
* See section 4.2.4 for a detailed description of the parameters.
*/
struct SchedDlTriggerReqParameters
{
uint16_t sfnSf;
uint8_t nr_dlInfoList;
struct DlInfoListElement_s *dlInfoList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_DL_RACH_INFO_REQ primitive.
* See section 4.2.5 for a detailed description of the parameters.
*/
struct SchedDlRachInfoReqParameters
{
uint16_t sfnSf;
uint8_t nrrachList;
struct RachListElement_s *rachList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_DL_CQI_INFO_REQ primitive.
* See section 4.2.6 for a detailed description of the parameters.
*/
struct SchedDlCqiInfoReqParameters
{
uint16_t sfnSf;
uint8_t nrcqiList;
struct CqiListElement_s *cqiList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_UL_TRIGGER_REQ primitive.
* See section 4.2.8 for a detailed description of the parameters.
*/
struct SchedUlTriggerReqParameters
{
uint16_t sfnSf;
uint8_t nr_ulInfoList;
struct UlInfoListElement_s *ulInfoList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_UL_NOISE_INTERFERENCE_REQ primitive.
* See section 4.2.9 for a detailed description of the parameters.
*/
struct SchedUlNoiseInterferenceReqParameters
{
uint8_t carrierIndex;
uint16_t sfnSf;
uint16_t rip;
uint16_t tnp;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_UL_SR_INFO_REQ primitive.
* See section 4.2.10 for a detailed description of the parameters.
*/
struct SchedUlSrInfoReqParameters
{
uint16_t sfnSf;
uint8_t nr_srList;
struct SrListElement_s *srList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_UL_MAC_CTRL_INFO_REQ primitive.
* See section 4.2.11 for a detailed description of the parameters.
*/
struct SchedUlMacCtrlInfoReqParameters
{
uint16_t sfnSf;
uint8_t nr_macCEUL_List;
struct MacCeUlListElement_s macCeUlList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
* See section 4.2.12 for a detailed description of the parameters.
*/
struct SchedUlCqiInfoReqParameters
{
uint16_t sfnSf;
struct UlCqi_s ulCqi;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
//
// SCHED - MAC Scheduler SAP primitives
// (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);
/**
* Parameters of the API primitives
*/
/**
* Parameters of the SCHED_DL_CONFIG_IND primitive.
* See section 4.2.7 for a detailed description of the parameters.
*/
struct SchedDlConfigIndParameters
{
uint8_t nr_buildDataList;
uint8_t nr_buildRARList;
uint8_t nr_buildBroadcastList;
struct BuildDataListElement_s *buildDataList;
struct BuildRarListElement_s *buildRarList;
struct BuildBroadcastListElement_s *buildBroadcastList;
/* mind: this is just number of elems in the next array (not actual number of PDCCH OFDM symbols) */
uint8_t nr_ofdmSymbolsCount;
struct PdcchOfdmSymbolCountListElement_s* nrOfPdcchOfdmSymbols[MAX_NUM_CCs];
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
/**
* Parameters of the SCHED_UL_CONFIG_IND primitive.
* See section 4.2.13 for a detailed description of the parameters.
*/
struct SchedUlConfigIndParameters
{
uint8_t nr_dciList;
uint8_t nr_phichList;
struct UlDciListElement_s *dciList;
struct PhichListElement_s *phichList;
uint8_t nr_vendorSpecificList;
struct VendorSpecificListElement_s *vendorSpecificList;
};
//
// SCHED - MAC Scheduler SAP primitives
// (See 4.2 for description of the primitives)
//
void SchedDlConfigInd (const struct SchedDlConfigIndParameters* params);
void SchedUlConfigInd (const struct SchedUlConfigIndParameters* params);
#endif /* FF_MAC_SCHED_SAP_H */
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