Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常顺宇
OpenXG-RAN
Commits
a1403400
Commit
a1403400
authored
Oct 08, 2015
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding header files from old svn branch
parent
33325d46
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1232 additions
and
0 deletions
+1232
-0
openair2/LAYER2/MAC/ff-mac-common.h
openair2/LAYER2/MAC/ff-mac-common.h
+569
-0
openair2/LAYER2/MAC/ff-mac-csched-sap.h
openair2/LAYER2/MAC/ff-mac-csched-sap.h
+389
-0
openair2/LAYER2/MAC/ff-mac-sched-sap.h
openair2/LAYER2/MAC/ff-mac-sched-sap.h
+274
-0
No files found.
openair2/LAYER2/MAC/ff-mac-common.h
0 → 100644
View file @
a1403400
/*******************************************************************************
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 */
openair2/LAYER2/MAC/ff-mac-csched-sap.h
0 → 100644
View file @
a1403400
/*******************************************************************************
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 */
openair2/LAYER2/MAC/ff-mac-sched-sap.h
0 → 100644
View file @
a1403400
/*******************************************************************************
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 */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment