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
wangwenhui
OpenXG-RAN
Commits
89ad7c70
Commit
89ad7c70
authored
Jul 25, 2017
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added mdci.h
parent
b61a2e0e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
466 additions
and
1 deletion
+466
-1
openair1/PHY/LTE_TRANSPORT/mdci.h
openair1/PHY/LTE_TRANSPORT/mdci.h
+465
-0
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+1
-1
No files found.
openair1/PHY/LTE_TRANSPORT/mdci.h
0 → 100644
View file @
89ad7c70
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file PHY/LTE_TRANSPORT/dci.h
* \brief typedefs for LTE DCI structures from 36-212, V8.6 2009-03. Limited to 5 MHz formats for the moment.Current LTE compliance V8.6 2009-03.
* \author R. Knopp
* \date 2011
* \version 0.1
* \company Eurecom
* \email: knopp@eurecom.fr
* \note
* \warning
*/
#include <stdint.h>
/// basic DCI Format Type 6-0A (5 MHz, FDD, rep2, no mod order override - XX bits)
struct
DCI6_0A_5MHz
{
/// padding to fill 32 bit word
uint32_t
padding
:
5
;
/// DCI subframe repetition
uint32_t
dci_rep
:
2
;
/// SRS Request
uint32_t
srs_req
:
1
;
/// CSI Request
uint32_t
csi_req
:
1
;
/// Power Control
uint32_t
TPC
:
2
;
/// redundancy version
uint32_t
rv_idx
:
2
;
/// new data indicator
uint32_t
ndi
:
1
;
/// harq id
uint32_t
harq_pid
:
3
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// RB Assignment (ceil(log2(floor(N_RB_UL/6))) + 5 bits)
uint32_t
rballoc
:
7
;
/// Hopping flag
uint32_t
hopping
:
1
;
/// type = 0 => DCI Format 0, type = 1 => DCI Format 1A
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_0A_5MHz
DCI6_0A_5MHz_t
;
#define sizeof_DCI6_0A_5MHz_t 28 // extended by one bit to match DCI6_1A
/// basic DCI Format Type 6-1A (5 MHz, FDD primary carrier, 24 bits, 5 bit format, TM!=9,TM!=6, no scheduling enhancement)
struct
DCI6_1A_5MHz
{
/// padding to fill 32-bit word
uint32_t
padding
:
4
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// HARQ-ACK resource offset
uint32_t
harq_ack_off
:
2
;
/// SRS request
uint32_t
srs_req
:
1
;
/// Power Control
uint32_t
TPC
:
2
;
/// Redundancy version
uint32_t
rv
:
2
;
/// New Data Indicator
uint32_t
ndi
:
1
;
/// HARQ Process
uint32_t
harq_pid
:
3
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// Resource block assignment (assignment flag = 0 for 5 MHz, ceil(log2(floor(N_RB_DL/6)))+5)
uint32_t
rballoc
:
7
;
/// Frequency hopping flag
uint32_t
hopping
:
1
;
/// 0/1A differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_1A_5MHz
DCI6_1A_5MHz_t
;
#define sizeof_DCI6_1A_5MHz_t 28
/// basic DCI Format Type 6-0A (10 MHz, FDD, rep2, no mod order override - XX bits)
struct
DCI6_0A_10MHz
{
/// padding to fill 32 bit word
uint32_t
padding
:
4
;
/// DCI subframe repetition
uint32_t
dci_rep
:
2
;
/// SRS Request
uint32_t
srs_req
:
1
;
/// CSI Request
uint32_t
csi_req
:
1
;
/// Power Control
uint32_t
TPC
:
2
;
/// redundancy version
uint32_t
rv_idx
:
2
;
/// new data indicator
uint32_t
ndi
:
1
;
/// harq id
uint32_t
harq_pid
:
3
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// RB Assignment (ceil(log2(floor(N_RB_UL/6))) + 5 bits)
uint32_t
rballoc
:
8
;
/// Hopping flag
uint32_t
hopping
:
1
;
/// type = 0 => DCI Format 0, type = 1 => DCI Format 1A
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_0A_10MHz
DCI6_0A_10MHz_t
;
#define sizeof_DCI6_0A_10MHz_t 29 // extended by one bit to match DCI6_1A
/// basic DCI Format Type 6-1A (10 MHz, FDD primary carrier, 24 bits, 5 bit format, TM!=9,TM!=6, no scheduling enhancement)
struct
DCI6_1A_10MHz
{
/// padding to fill 32-bit word
uint32_t
padding
:
4
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// HARQ-ACK resource offset
uint32_t
harq_ack_off
:
2
;
/// SRS request
uint32_t
srs_req
:
1
;
/// Power Control
uint32_t
TPC
:
2
;
/// Redundancy version
uint32_t
rv
:
2
;
/// New Data Indicator
uint32_t
ndi
:
1
;
/// HARQ Process
uint32_t
harq_pid
:
3
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// Resource block assignment (assignment flag = 0 for 10 MHz, ceil(log2(floor(N_RB_DL/6)))+5)
uint32_t
rballoc
:
8
;
/// Frequency hopping flag
uint32_t
hopping
:
1
;
/// 0/1A differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_1A_10MHz
DCI6_1A_10MHz_t
;
#define sizeof_DCI6_1A_10MHz_t 29
/// basic DCI Format Type 6-0A (20 MHz, FDD, rep2, no mod order override - XX bits)
struct
DCI6_0A_20MHz
{
/// padding to fill 32 bit word
uint32_t
padding
:
4
;
/// DCI subframe repetition
uint32_t
dci_rep
:
2
;
/// SRS Request
uint32_t
srs_req
:
1
;
/// CSI Request
uint32_t
csi_req
:
1
;
/// Power Control
uint32_t
TPC
:
2
;
/// redundancy version
uint32_t
rv_idx
:
2
;
/// new data indicator
uint32_t
ndi
:
1
;
/// harq id
uint32_t
harq_pid
:
3
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// RB Assignment (ceil(log2(floor(N_RB_UL/6))) + 5 bits)
uint32_t
rballoc
:
9
;
/// Hopping flag
uint32_t
hopping
:
1
;
/// type = 0 => DCI Format 0, type = 1 => DCI Format 1A
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_0A_20MHz
DCI6_0A_20MHz_t
;
#define sizeof_DCI6_0A_20MHz_t 30 // extended by one bit to match DCI6_1A
/// basic DCI Format Type 6-1A (20 MHz, FDD primary carrier, 24 bits, 5 bit format, TM!=9,TM!=6, no scheduling enhancement)
struct
DCI6_1A_20MHz
{
/// padding to fill 32-bit word
uint32_t
padding
:
3
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// HARQ-ACK resource offset
uint32_t
harq_ack_off
:
2
;
/// SRS request
uint32_t
srs_req
:
1
;
/// Power Control
uint32_t
TPC
:
2
;
/// Redundancy version
uint32_t
rv
:
2
;
/// New Data Indicator
uint32_t
ndi
:
1
;
/// HARQ Process
uint32_t
harq_pid
:
3
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// Resource block assignment (assignment flag = 0 for 20 MHz, ceil(log2(floor(N_RB_DL/6)))+5)
uint32_t
rballoc
:
9
;
/// Frequency hopping flag
uint32_t
hopping
:
1
;
/// 0/1A differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_1A_20MHz
DCI6_1A_20MHz_t
;
#define sizeof_DCI6_1A_20MHz_t 30
/// basic DCI Format Type 6-0B (5 MHz)
struct
DCI6_0B_5MHz
{
/// DCI subframe repetition
uint32_t
dci_rep
:
2
;
/// new data indicator
uint32_t
ndi
:
1
;
/// harq id
uint32_t
harq_pid
:
1
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// RB Assignment (ceil(log2(floor(N_RB_UL/6))) + 3 bits)
uint32_t
rballoc
:
5
;
/// type = 0 => DCI Format 0B, type = 1 => DCI Format 1B
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_0B_5MHz
DCI6_0B_5MHz_t
;
#define sizeof_DCI6_0B_5MHz_t 16
/// basic DCI Format Type 6-1B (5 MHz)
struct
DCI6_1B_5MHz
{
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// HARQ-ACK resource offset
uint32_t
harq_ack_off
:
2
;
/// New Data Indicator
uint32_t
ndi
:
1
;
/// HARQ Process
uint32_t
harq_pid
:
1
;
/// Repetition number
uint32_t
rep
:
2
;
/// Resource block assignment (assignment flag = 0 for 5 MHz, ceil(log2(floor(N_RB_DL/6)))+1)
uint32_t
rballoc
:
3
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// 0B/1B differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_1B_5MHz
DCI6_1B_5MHz_t
;
#define sizeof_DCI6_1B_5MHz_t 16
/// basic DCI Format Type 6-0B (10 MHz)
struct
DCI6_0B_10MHz
{
/// padding to fill 32-bit word
uint32_t
padding
:
15
;
/// DCI subframe repetition
uint32_t
dci_rep
:
2
;
/// new data indicator
uint32_t
ndi
:
1
;
/// harq id
uint32_t
harq_pid
:
1
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// RB Assignment (ceil(log2(floor(N_RB_UL/6))) + 3 bits)
uint32_t
rballoc
:
6
;
/// type = 0 => DCI Format 0B, type = 1 => DCI Format 1B
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_0B_10MHz
DCI6_0B_10MHz_t
;
#define sizeof_DCI6_0B_10MHz_t 17
/// basic DCI Format Type 6-1B (10 MHz)
struct
DCI6_1B_10MHz
{
/// padding to fill 32-bit word
uint32_t
padding
:
15
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// HARQ-ACK resource offset
uint32_t
harq_ack_off
:
2
;
/// New Data Indicator
uint32_t
ndi
:
1
;
/// HARQ Process
uint32_t
harq_pid
:
1
;
/// Repetition number
uint32_t
rep
:
2
;
/// Resource block assignment (assignment flag = 0 for 5 MHz, ceil(log2(floor(N_RB_DL/6)))+1)
uint32_t
rballoc
:
4
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// 0B/1B differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_1B_10MHz
DCI6_1B_10MHz_t
;
#define sizeof_DCI6_1B_10MHz_t 17
/// basic DCI Format Type 6-0B (20 MHz)
struct
DCI6_0B_20MHz
{
/// padding to fill 32-bit word
uint32_t
padding
:
14
;
/// DCI subframe repetition
uint32_t
dci_rep
:
2
;
/// new data indicator
uint32_t
ndi
:
1
;
/// harq id
uint32_t
harq_pid
:
1
;
/// Repetition number
uint32_t
rep
:
2
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// RB Assignment (ceil(log2(floor(N_RB_UL/6))) + 3 bits)
uint32_t
rballoc
:
7
;
/// type = 0 => DCI Format 0B, type = 1 => DCI Format 1B
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_0B_20MHz
DCI6_0B_20MHz_t
;
#define sizeof_DCI6_0B_20MHz_t 18
/// basic DCI Format Type 6-1B (10 MHz)
struct
DCI6_1B_20MHz
{
/// padding to fill 32-bit word
uint32_t
padding
:
14
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// HARQ-ACK resource offset
uint32_t
harq_ack_off
:
2
;
/// New Data Indicator
uint32_t
ndi
:
1
;
/// HARQ Process
uint32_t
harq_pid
:
1
;
/// Repetition number
uint32_t
rep
:
2
;
/// Resource block assignment (assignment flag = 0 for 5 MHz, ceil(log2(floor(N_RB_DL/6)))+1)
uint32_t
rballoc
:
5
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
4
;
/// 0B/1B differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_1B_20MHz
DCI6_1B_20MHz_t
;
#define sizeof_DCI6_1B_20MHz_t 18
/// basic DCI Format Type 6-2 for paging (5 MHz)
struct
DCI6_2_paging_5MHz
{
/// padding to reach 32-bits
uint32_t
padding
:
21
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// Repetition number
uint32_t
rep
:
3
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
3
;
/// Resource block assignment (ceil(log2(floor(N_RB_DL/6))) bits)
uint32_t
rballoc
:
2
;
/// 0B/1B paging/directindication differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_2_paging_5MHz
DCI6_2_paging_5MHz_t
;
/// basic DCI Format Type 6-2 for direct indication (5 MHz)
struct
DCI6_2_di_5MHz
{
/// padding to reach 32-bits
uint32_t
padding
:
23
;
/// Direct indication information
uint32_t
di_info
:
8
;
/// 0B/1B paging/directindication differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_2_di_5MHz
DCI6_2_di_5MHz_t
;
#define sizeof_DCI6_2_5MHz_t 11
/// basic DCI Format Type 6-2 for paging (10 MHz)
struct
DCI6_2_paging_10MHz
{
/// padding to reach 32-bits
uint32_t
padding
:
20
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// Repetition number
uint32_t
rep
:
3
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
3
;
/// Resource block assignment (ceil(log2(floor(N_RB_DL/6))))
uint32_t
rballoc
:
3
;
/// 0B/1B paging/directindication differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_2_paging_10MHz
DCI6_2_paging_10MHz_t
;
/// basic DCI Format Type 6-2 for direct indication (10 MHz)
struct
DCI6_2_di_10MHz
{
/// padding to reach 32-bits
uint32_t
padding
:
23
;
/// Direct indication information
uint32_t
di_info
:
8
;
/// 0B/1B paging/directindication differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_2_di_10MHz
DCI6_2_di_10MHz_t
;
#define sizeof_DCI6_2_10MHz_t 12
/// basic DCI Format Type 6-2 for paging (20 MHz)
struct
DCI6_2_paging_20MHz
{
/// padding to reach 32-bits
uint32_t
padding
:
19
;
/// DCI subframe repetition number
uint32_t
dci_rep
:
2
;
/// Repetition number
uint32_t
rep
:
3
;
/// Modulation and Coding Scheme and Redundancy Version
uint32_t
mcs
:
3
;
/// Resource block assignment (ceil(log2(floor(N_RB_DL/6))))
uint32_t
rballoc
:
4
;
/// 0B/1B paging/directindication differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_2_paging_20MHz
DCI6_2_paging_20MHz_t
;
/// basic DCI Format Type 6-2 for direct indication (20 MHz)
struct
DCI6_2_di_20MHz
{
/// padding to reach 32-bits
uint32_t
padding
:
23
;
/// Direct indication information
uint32_t
di_info
:
8
;
/// 0B/1B paging/directindication differentiator
uint32_t
type
:
1
;
}
__attribute__
((
__packed__
));
typedef
struct
DCI6_2_di_20MHz
DCI6_2_di_20MHz_t
;
#define sizeof_DCI6_2_20MHz_t 13
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
89ad7c70
...
@@ -1218,7 +1218,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
...
@@ -1218,7 +1218,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
case
NFAPI_HI_DCI0_HI_PDU_TYPE
:
case
NFAPI_HI_DCI0_HI_PDU_TYPE
:
handle_nfapi_hi_dci0_hi_pdu
(
eNB
,
proc
,
hi_dci0_req_pdu
);
handle_nfapi_hi_dci0_hi_pdu
(
eNB
,
proc
,
hi_dci0_req_pdu
);
eNB
->
pdcch_vars
[
subframe
&
1
].
num_
dc
i
++
;
eNB
->
pdcch_vars
[
subframe
&
1
].
num_
h
i
++
;
break
;
break
;
}
}
...
...
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