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
zzha zzha
OpenXG-RAN
Commits
fb902d98
Commit
fb902d98
authored
Oct 26, 2015
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into bugfix-40-channel_bandwidth
parents
bc1f00e9
94a42bec
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
301 additions
and
153 deletions
+301
-153
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-1
cmake_targets/build_oai
cmake_targets/build_oai
+4
-4
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+265
-122
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
+5
-4
openair3/TEST/test_kdf.c
openair3/TEST/test_kdf.c
+2
-2
openair3/TEST/test_secu_kenb.c
openair3/TEST/test_secu_kenb.c
+3
-3
openair3/TEST/test_secu_knas.c
openair3/TEST/test_secu_knas.c
+9
-7
openair3/TEST/test_secu_knas_encrypt_eea1.c
openair3/TEST/test_secu_knas_encrypt_eea1.c
+6
-5
openair3/TEST/test_secu_knas_encrypt_eea2.c
openair3/TEST/test_secu_knas_encrypt_eea2.c
+6
-5
No files found.
cmake_targets/CMakeLists.txt
View file @
fb902d98
...
...
@@ -1649,7 +1649,7 @@ foreach(myExe s1ap
${
OPENAIR3_DIR
}
/TEST/test_
${
myExe
}
.c
)
target_link_libraries
(
test_
${
myExe
}
-Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
${
CONFIG_LIBRARIES
}
fdproto fdcore
-Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
${
CONFIG_LIBRARIES
}
)
endforeach
(
myExe
)
...
...
cmake_targets/build_oai
View file @
fb902d98
...
...
@@ -47,6 +47,7 @@ PRINT_STATS="False"
VCD_TIMING
=
"False"
REL
=
"Rel10"
HW
=
"EXMIMO"
NOS1
=
0
EPC
=
0
VERBOSE_COMPILE
=
0
CFLAGS_PROCESSOR_USER
=
""
...
...
@@ -265,12 +266,11 @@ function main() {
if
[
"
$HW
"
==
"OAI_USRP"
]
;
then
echo_info
"installing packages for USRP support"
check_install_usrp_uhd_driver
fi
fi
if
[
"
$HW
"
==
"OAI_BLADERF"
]
;
then
echo_info
"installing packages for BALDERF support"
check_install_bladerf_driver
fi
fi
if
[
"
$INSTALL_OPTIONAL
"
=
"1"
]
;
then
...
...
@@ -321,7 +321,7 @@ function main() {
cmake ..
fi
if
[
"
$eNB
"
=
"1"
]
;
then
if
[
"
$eNB
"
=
"1"
-o
"
$UE
"
=
"1"
]
;
then
echo_info
"Compiling
$lte_exec
"
compilations
\
$lte_build_dir
$lte_exec
\
...
...
@@ -338,7 +338,7 @@ function main() {
fi
fi
if
[
"
$UE
"
=
1
]
;
then
if
[
"
$UE
"
=
1
-a
"
$NOS1
"
=
"0"
]
;
then
# ue_ip driver compilation
echo_info
"Compiling UE specific part"
compilations
\
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
fb902d98
...
...
@@ -45,7 +45,6 @@
#include "PHY/sse_intrin.h"
#ifndef USER_MODE
#define NOCYGWIN_STATIC static
#else
...
...
@@ -53,9 +52,9 @@
#endif
//#define DEBUG_PHY 1
//#define DEBUG_DLSCH_MOD 1
//#define DEBUG_DLSCH_
DE
MOD 1
int
avg
[
4
];
int
avg
[
4
];
// [MCS][i_mod (0,1,2) = (2,4,6)]
unsigned
char
offset_mumimo_llr_drange_fix
=
0
;
...
...
@@ -3091,19 +3090,21 @@ void dlsch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
ch_mag1
=
(
__m128i
*
)
&
dl_ch_mag
[
2
][
jj
];
ch_mag0b
=
(
__m128i
*
)
&
dl_ch_magb
[
0
][
jj
];
ch_mag1b
=
(
__m128i
*
)
&
dl_ch_magb
[
2
][
jj
];
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
for
(
re
=
0
;
re
<
((
pilots
==
0
)
?
12
:
8
);
re
+=
2
)
{
// Alamouti RX combining
// printf("Alamouti: symbol %d, rb %d, re %d: rxF0 (%d,%d,%d,%d), rxF1 (%d,%d,%d,%d)\n",symbol,rb,re,rxF0[0],rxF0[1],rxF0[2],rxF0[3],rxF1[0],rxF1[1],rxF1[2],rxF1[3]);
rxF0
[
0
]
=
rxF0
[
0
]
+
rxF1
[
2
];
rxF0
[
1
]
=
rxF0
[
1
]
-
rxF1
[
3
];
rxF0
[
1
]
=
rxF0
[
1
]
-
rxF1
[
3
];
rxF0
[
2
]
=
rxF0
[
2
]
-
rxF1
[
0
];
rxF0
[
3
]
=
rxF0
[
3
]
+
rxF1
[
1
];
// printf("Alamouti: rxF0 after (%d,%d,%d,%d)\n",rxF0[0],rxF0[1],rxF0[2],rxF0[3]);
rxF0
+=
4
;
rxF1
+=
4
;
...
...
@@ -3229,12 +3230,40 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
else
rb_alloc_ind
=
0
;
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
// For second half of RBs skip DC carrier
if
(
rb
==
(
frame_parms
->
N_RB_DL
>>
1
))
{
rxF
=
&
rxdataF
[
aarx
][(
1
+
(
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
//dl_ch0++;
}
// PBCH
if
((
subframe
==
0
)
&&
(
rb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
>=
nsymb
>>
1
)
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
rb_alloc_ind
=
0
;
}
//SSS
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
rb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
sss_symb
)
)
{
rb_alloc_ind
=
0
;
}
if
(
frame_parms
->
frame_type
==
FDD
)
{
//PSS
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
rb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
}
if
((
frame_parms
->
frame_type
==
TDD
)
&&
(
subframe
==
6
))
{
//TDD Subframe 6
if
((
rb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
}
if
(
rb_alloc_ind
==
1
)
{
*
pmi_ext
=
(
pmi
>>
((
rb
>>
2
)
<<
1
))
&
3
;
memcpy
(
dl_ch0_ext
,
dl_ch0
,
12
*
sizeof
(
int
));
...
...
@@ -3272,7 +3301,7 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
rxF_ext
+=
10
;
}
nb_rb
++
;
}
dl_ch0
+=
12
;
...
...
@@ -3281,7 +3310,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
}
else
{
// Odd number of RBs
for
(
rb
=
0
;
rb
<
frame_parms
->
N_RB_DL
>>
1
;
rb
++
)
{
// printf("dlch_ext %d\n",dl_ch0_ext-&dl_ch_estimates_ext[aarx][0]);
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"dlch_ext %d
\n
"
,
dl_ch0_ext
-&
dl_ch_estimates_ext
[
aarx
][
0
]);
#endif
skip_half
=
0
;
if
(
rb
<
32
)
...
...
@@ -3295,6 +3326,8 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
else
rb_alloc_ind
=
0
;
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
// PBCH
if
((
subframe
==
0
)
&&
(
rb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
>=
(
nsymb
>>
1
))
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
...
...
@@ -3328,7 +3361,10 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
//PSS in subframe 0/5 if FDD
if
(
frame_parms
->
frame_type
==
FDD
)
{
//FDD
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
rb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
rb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
...
...
@@ -3352,55 +3388,68 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
if
(
rb_alloc_ind
==
1
)
{
// printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"rb %d/symbol %d (skip_half %d)
\n
"
,
rb
,
l
,
skip_half
);
#endif
if
(
pilots
==
0
)
{
//
printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
//
printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
if
(
skip_half
==
1
)
{
memcpy
(
dl_ch0_ext
,
dl_ch0
,
6
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
6
;
i
++
)
rxF_ext
[
i
]
=
rxF
[
i
];
for
(
i
=
0
;
i
<
6
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[
i
];
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
}
dl_ch0_ext
+=
6
;
rxF_ext
+=
6
;
}
else
if
(
skip_half
==
2
)
{
memcpy
(
dl_ch0_ext
,
dl_ch0
+
6
,
6
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
6
;
i
++
)
for
(
i
=
0
;
i
<
6
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[(
i
+
6
)];
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
}
dl_ch0_ext
+=
6
;
rxF_ext
+=
6
;
}
else
{
memcpy
(
dl_ch0_ext
,
dl_ch0
,
12
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
12
;
i
++
)
for
(
i
=
0
;
i
<
12
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[
i
];
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
}
dl_ch0_ext
+=
12
;
rxF_ext
+=
12
;
}
}
else
{
//
printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
//
printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
j
=
0
;
if
(
skip_half
==
1
)
{
for
(
i
=
0
;
i
<
6
;
i
++
)
{
if
(
i
!=
((
frame_parms
->
nushift
+
poffset
)
%
6
))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
}
}
rxF_ext
+=
5
;
dl_ch0_ext
+=
5
;
rxF_ext
+=
5
;
}
else
if
(
skip_half
==
2
)
{
for
(
i
=
0
;
i
<
6
;
i
++
)
{
if
(
i
!=
((
frame_parms
->
nushift
+
poffset
)
%
6
))
{
rxF_ext
[
j
]
=
rxF
[(
i
+
6
)];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
+
6
];
}
}
...
...
@@ -3412,7 +3461,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
if
((
i
!=
(
frame_parms
->
nushift
+
poffset
))
&&
(
i
!=
((
frame_parms
->
nushift
+
poffset
+
6
)
%
12
)))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
}
...
...
@@ -3422,8 +3473,6 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
rxF_ext
+=
10
;
}
}
nb_rb
++
;
}
dl_ch0
+=
12
;
...
...
@@ -3444,36 +3493,42 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
rb_alloc_ind
=
0
;
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
// PBCH
if
((
subframe
==
0
)
&&
(
rb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
>=
(
nsymb
>>
1
))
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
if
((
subframe
==
0
)
&&
(
l
>=
(
nsymb
>>
1
))
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
rb_alloc_ind
=
0
;
}
//SSS
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
rb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
sss_symb
)
)
{
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
l
==
sss_symb
)
)
{
rb_alloc_ind
=
0
;
}
if
(
frame_parms
->
frame_type
==
FDD
)
{
//PSS
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
rb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
}
//PSS
if
((
frame_parms
->
frame_type
==
TDD
)
&&
(
subframe
==
6
))
{
//PSS
if
((
rb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
(
subframe
==
6
)
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
// printf("dlch_ext %d\n",dl_ch0_ext-&dl_ch_estimates_ext[aarx][0]);
// printf("DC rb %d (%p)\n",rb,rxF);
if
(
rb_alloc_ind
==
1
)
{
// printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"rb %d/symbol %d (skip_half %d)
\n
"
,
rb
,
l
,
skip_half
);
#endif
if
(
pilots
==
0
)
{
for
(
i
=
0
;
i
<
6
;
i
++
)
{
dl_ch0_ext
[
i
]
=
dl_ch0
[
i
];
...
...
@@ -3496,7 +3551,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
if
(
i
!=
((
frame_parms
->
nushift
+
poffset
)
%
6
))
{
dl_ch0_ext
[
j
]
=
dl_ch0
[
i
];
rxF_ext
[
j
++
]
=
rxF
[
i
];
// printf("**extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j-1],*(1+(short*)&rxF_ext[j-1]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"**extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
-
1
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
-
1
]));
#endif
}
}
...
...
@@ -3506,7 +3563,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
if
(
i
!=
((
frame_parms
->
nushift
+
6
+
poffset
)
%
12
))
{
dl_ch0_ext
[
j
]
=
dl_ch0
[
i
];
rxF_ext
[
j
++
]
=
rxF
[(
1
+
i
-
6
)];
// printf("**extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j-1],*(1+(short*)&rxF_ext[j-1]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"**extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
-
1
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
-
1
]));
#endif
}
}
...
...
@@ -3514,7 +3573,6 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
rxF_ext
+=
10
;
}
// symbol_mod==0
nb_rb
++
;
}
// rballoc==1
else
{
rxF
=
&
rxdataF
[
aarx
][((
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
...
...
@@ -3540,7 +3598,8 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
else
rb_alloc_ind
=
0
;
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
// PBCH
if
((
subframe
==
0
)
&&
(
rb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
rb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
>=
nsymb
>>
1
)
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
...
...
@@ -3590,7 +3649,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
}
if
(
rb_alloc_ind
==
1
)
{
// printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"rb %d/symbol %d (skip_half %d)
\n
"
,
rb
,
l
,
skip_half
);
#endif
/*
printf("rb %d\n",rb);
for (i=0;i<12;i++)
...
...
@@ -3598,43 +3659,54 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
printf("\n");
*/
if
(
pilots
==
0
)
{
//
printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
//
printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
if
(
skip_half
==
1
)
{
memcpy
(
dl_ch0_ext
,
dl_ch0
,
6
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
6
;
i
++
)
for
(
i
=
0
;
i
<
6
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[
i
];
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
}
dl_ch0_ext
+=
6
;
rxF_ext
+=
6
;
}
else
if
(
skip_half
==
2
)
{
memcpy
(
dl_ch0_ext
,
dl_ch0
+
6
,
6
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
6
;
i
++
)
for
(
i
=
0
;
i
<
6
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[(
i
+
6
)];
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
}
dl_ch0_ext
+=
6
;
rxF_ext
+=
6
;
}
else
{
memcpy
(
dl_ch0_ext
,
dl_ch0
,
12
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
12
;
i
++
)
for
(
i
=
0
;
i
<
12
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[
i
];
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
}
dl_ch0_ext
+=
12
;
rxF_ext
+=
12
;
}
}
else
{
//
printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
//
printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
j
=
0
;
if
(
skip_half
==
1
)
{
for
(
i
=
0
;
i
<
6
;
i
++
)
{
if
(
i
!=
((
frame_parms
->
nushift
+
poffset
)
%
6
))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
}
}
...
...
@@ -3645,7 +3717,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
for
(
i
=
0
;
i
<
6
;
i
++
)
{
if
(
i
!=
((
frame_parms
->
nushift
+
poffset
)
%
6
))
{
rxF_ext
[
j
]
=
rxF
[(
i
+
6
)];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
+
6
];
}
}
...
...
@@ -3657,7 +3731,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
if
((
i
!=
(
frame_parms
->
nushift
+
poffset
))
&&
(
i
!=
((
frame_parms
->
nushift
+
poffset
+
6
)
%
12
)))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
rb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
}
}
...
...
@@ -3666,8 +3742,6 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
rxF_ext
+=
10
;
}
}
// pilots=0
nb_rb
++
;
}
dl_ch0
+=
12
;
...
...
@@ -3749,52 +3823,58 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
rb_alloc_ind
=
(
rb_alloc
[
3
]
>>
(
prb
-
96
))
&
1
;
else
rb_alloc_ind
=
0
;
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
// PBCH
if
((
subframe
==
0
)
&&
(
prb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
>=
(
nsymb
>>
1
))
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
rb_alloc_ind
=
0
;
// printf("symbol %d / rb %d: skipping PBCH REs\n",symbol,prb);
}
//SSS
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
prb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
sss_symb
)
)
{
rb_alloc_ind
=
0
;
// printf("symbol %d / rb %d: skipping SSS REs\n",symbol,prb);
}
//PSS in subframe 0/5 if FDD
if
(
frame_parms
->
frame_type
==
FDD
)
{
//FDD
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
prb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
if
((
frame_parms
->
N_RB_DL
&
1
)
==
0
)
{
// even number of RBs
// PBCH
if
((
subframe
==
0
)
&&
(
prb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
(
l
>=
(
nsymb
>>
1
))
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
rb_alloc_ind
=
0
;
//
printf("symbol %d / rb %d: skipping PSS
REs\n",symbol,prb);
//
printf("symbol %d / rb %d: skipping PBCH
REs\n",symbol,prb);
}
}
if
((
frame_parms
->
frame_type
==
TDD
)
&&
(
subframe
==
6
))
{
//TDD Subframe 6
if
((
prb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
=
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
p
ss_symb
)
)
{
//SSS
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
prb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
s
ss_symb
)
)
{
rb_alloc_ind
=
0
;
// printf("symbol %d / rb %d: skipping SSS REs\n",symbol,prb);
}
}
if
(
rb_alloc_ind
==
1
)
{
// PRB is allocated
//PSS in subframe 0/5 if FDD
if
(
frame_parms
->
frame_type
==
FDD
)
{
//FDD
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
prb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
// printf("symbol %d / rb %d: skipping PSS REs\n",symbol,prb);
}
}
if
((
frame_parms
->
frame_type
==
TDD
)
&&
(
subframe
==
6
))
{
//TDD Subframe 6
if
((
prb
>=
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
}
if
(
rb_alloc_ind
==
1
)
{
// PRB is allocated
if
((
frame_parms
->
N_RB_DL
&
1
)
==
0
)
{
// even number of RBs
prb_off
=
12
*
prb
;
prb_off2
=
1
+
(
12
*
(
prb
-
(
frame_parms
->
N_RB_DL
>>
1
)));
...
...
@@ -3839,12 +3919,55 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
rxF_ext
+=
8
;
}
// pilots==1
nb_rb
++
;
}
}
else
{
// Odd number of RBs
}
else
{
// Odd number of RBs
skip_half
=
0
;
// PBCH
if
((
subframe
==
0
)
&&
(
prb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
>=
(
nsymb
>>
1
))
&&
(
l
<
((
nsymb
>>
1
)
+
4
)))
{
rb_alloc_ind
=
0
;
// printf("symbol %d / rb %d: skipping PBCH REs\n",symbol,prb);
}
//SSS
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
prb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
sss_symb
)
)
{
rb_alloc_ind
=
0
;
// printf("symbol %d / rb %d: skipping SSS REs\n",symbol,prb);
}
//PSS in subframe 0/5 if FDD
if
(
frame_parms
->
frame_type
==
FDD
)
{
//FDD
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
prb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
// printf("symbol %d / rb %d: skipping PSS REs\n",symbol,prb);
}
}
if
((
frame_parms
->
frame_type
==
TDD
)
&&
((
subframe
==
1
)
||
(
subframe
==
6
)))
{
//TDD Subframe 1-6
if
((
prb
>
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
prb
<
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
)
)
{
rb_alloc_ind
=
0
;
}
}
if
(
rb_alloc_ind
==
1
)
{
skip_half
=
0
;
//Check if we have to drop half a PRB due to PSS/SSS/PBCH
// skip_half == 0 means full PRB
// skip_half == 1 means first half is used (leftmost half-PRB from PSS/SSS/PBCH)
...
...
@@ -3875,13 +3998,12 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
if
(((
frame_parms
->
frame_type
==
FDD
)
&&
(((
subframe
==
0
)
||
(
subframe
==
5
))))
||
//FDD Subframes 0,5
((
frame_parms
->
frame_type
==
TDD
)
&&
(((
subframe
==
2
)
||
(
subframe
==
6
)))))
{
//TDD Subframes 2
,6
(((
subframe
==
1
)
||
(
subframe
==
6
)))))
{
//TDD Subframes 1
,6
if
((
prb
==
((
frame_parms
->
N_RB_DL
>>
1
)
-
3
))
&&
(
l
==
pss_symb
))
skip_half
=
1
;
else
if
(((
subframe
==
0
)
||
(
subframe
==
5
))
&&
(
prb
==
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
else
if
((
prb
==
((
frame_parms
->
N_RB_DL
>>
1
)
+
3
))
&&
(
l
==
pss_symb
))
skip_half
=
2
;
}
...
...
@@ -3901,9 +4023,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
rxF
=
&
rxdataF
[
aarx
][
prb_off2
+
(
symbol
*
(
frame_parms
->
ofdm_symbol_size
))];
}
//
printf("symbol %d / rb %d: alloc %d skip_half %d (rxF %p, rxF_ext %p) prb_off (%d,%d)\n",symbol,prb,rb_alloc_ind,skip_half,rxF,rxF_ext,prb_off,prb_off2);
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"symbol %d / rb %d: alloc %d skip_half %d (rxF %p, rxF_ext %p) prb_off (%d,%d)
\n
"
,
symbol
,
prb
,
rb_alloc_ind
,
skip_half
,
rxF
,
rxF_ext
,
prb_off
,
prb_off2
);
#endif
*
pmi_loc
=
(
pmi
>>
((
prb
>>
2
)
<<
1
))
&
3
;
// printf("symbol_mod %d (pilots %d) rb %d, sb %d, pmi %d (pmi_loc %p,rxF %p, ch00 %p, ch01 %p, rxF_ext %p dl_ch0_ext %p dl_ch1_ext %p)\n",symbol_mod,pilots,rb,rb>>2,*pmi_loc,pmi_loc,rxF,dl_ch0, dl_ch1, rxF_ext,dl_ch0_ext,dl_ch1_ext);
...
...
@@ -3915,6 +4037,10 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
6
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
6
*
sizeof
(
int32_t
));
memcpy
(
rxF_ext
,
rxF
,
6
*
sizeof
(
int32_t
));
#ifdef DEBUG_DLSCH_DEMOD
for
(
i
=
0
;
i
<
6
;
i
++
)
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
prb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
dl_ch0_ext
+=
6
;
dl_ch1_ext
+=
6
;
rxF_ext
+=
6
;
...
...
@@ -3922,6 +4048,10 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
memcpy
(
dl_ch0_ext
,
dl_ch0p
+
6
,
6
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
+
6
,
6
*
sizeof
(
int32_t
));
memcpy
(
rxF_ext
,
rxF
+
6
,
6
*
sizeof
(
int32_t
));
#ifdef DEBUG_DLSCH_DEMOD
for
(
i
=
0
;
i
<
6
;
i
++
)
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
prb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
dl_ch0_ext
+=
6
;
dl_ch1_ext
+=
6
;
rxF_ext
+=
6
;
...
...
@@ -3929,8 +4059,10 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
12
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
12
*
sizeof
(
int32_t
));
memcpy
(
rxF_ext
,
rxF
,
12
*
sizeof
(
int32_t
));
#ifdef DEBUG_DLSCH_DEMOD
for
(
i
=
0
;
i
<
12
;
i
++
)
// printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
prb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
#endif
dl_ch0_ext
+=
12
;
dl_ch1_ext
+=
12
;
rxF_ext
+=
12
;
...
...
@@ -3943,7 +4075,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
if
((
i
!=
frame_parms
->
nushift
)
&&
(
i
!=
((
frame_parms
->
nushift
+
3
)
%
6
)))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("(pilots,skip1)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"(pilots,skip1)extract rb %d, re %d (%d)=> (%d,%d)
\n
"
,
prb
,
i
,
j
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
]
=
dl_ch0p
[
i
];
dl_ch1_ext
[
j
++
]
=
dl_ch1p
[
i
];
}
...
...
@@ -3956,15 +4090,17 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
if
((
i
!=
frame_parms
->
nushift
)
&&
(
i
!=
((
frame_parms
->
nushift
+
3
)
%
6
)))
{
rxF_ext
[
j
]
=
rxF
[(
i
+
6
)];
// printf("(pilots,skip2)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"(pilots,skip2)extract rb %d, re %d (%d) => (%d,%d)
\n
"
,
prb
,
i
,
j
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
]
=
dl_ch0p
[
i
+
6
];
dl_ch1_ext
[
j
++
]
=
dl_ch1p
[
i
+
6
];
}
dl_ch0_ext
+=
4
;
dl_ch1_ext
+=
4
;
rxF_ext
+=
4
;
}
dl_ch0_ext
+=
4
;
dl_ch1_ext
+=
4
;
rxF_ext
+=
4
;
}
else
{
//skip_half==0
for
(
i
=
0
;
i
<
12
;
i
++
)
{
if
((
i
!=
frame_parms
->
nushift
)
&&
...
...
@@ -3972,7 +4108,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
(
i
!=
frame_parms
->
nushift
+
6
)
&&
(
i
!=
((
frame_parms
->
nushift
+
9
)
%
12
)))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"(pilots)extract rb %d, re %d => (%d,%d)
\n
"
,
prb
,
i
,
*
(
short
*
)
&
rxF_ext
[
j
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
j
]));
#endif
dl_ch0_ext
[
j
]
=
dl_ch0p
[
i
];
dl_ch1_ext
[
j
++
]
=
dl_ch1p
[
i
];
}
...
...
@@ -3982,31 +4120,33 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
rxF_ext
+=
8
;
}
//skip_half==0
}
//pilots==1
nb_rb
++
;
}
else
{
// Do middle RB (around DC)
if
(
pilots
==
0
)
{
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
6
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
6
*
sizeof
(
int32_t
));
memcpy
(
rxF_ext
,
rxF
,
6
*
sizeof
(
int32_t
));
/*
#ifdef DEBUG_DLSCH_DEMOD
for
(
i
=
0
;
i
<
6
;
i
++
)
{
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
prb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
}*/
}
#endif
rxF_ext
+=
6
;
dl_ch0_ext
+=
6
;
dl_ch1_ext
+=
6
;
dl_ch0p
+=
6
;
dl_ch1p
+=
6
;
rxF
=
&
rxdataF
[
aarx
][((
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
rxF
=
&
rxdataF
[
aarx
][
1
+
((
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
6
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
6
*
sizeof
(
int32_t
));
memcpy
(
rxF_ext
,
rxF
,
6
*
sizeof
(
int32_t
));
/*for (i=0; i<6; i++) {
#ifdef DEBUG_DLSCH_DEMOD
for
(
i
=
0
;
i
<
6
;
i
++
)
{
printf
(
"extract rb %d, re %d => (%d,%d)
\n
"
,
prb
,
i
,
*
(
short
*
)
&
rxF_ext
[
i
],
*
(
1
+
(
short
*
)
&
rxF_ext
[
i
]));
}*/
}
#endif
rxF_ext
+=
6
;
dl_ch0_ext
+=
6
;
dl_ch1_ext
+=
6
;
...
...
@@ -4019,18 +4159,22 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
dl_ch0_ext
[
j
]
=
dl_ch0p
[
i
];
dl_ch1_ext
[
j
]
=
dl_ch1p
[
i
];
rxF_ext
[
j
++
]
=
rxF
[
i
];
//printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[i],*(1+(short*)&rxF[i]));
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"(pilots)extract rb %d, re %d (%d) => (%d,%d)
\n
"
,
prb
,
i
,
j
,
*
(
short
*
)
&
rxF
[
i
],
*
(
1
+
(
short
*
)
&
rxF
[
i
]));
#endif
}
}
rxF
=
&
rxdataF
[
aarx
][
symbol
*
(
frame_parms
->
ofdm_symbol_size
)];
rxF
=
&
rxdataF
[
aarx
][
1
+
symbol
*
(
frame_parms
->
ofdm_symbol_size
)];
for
(;
i
<
12
;
i
++
)
{
if
((
i
!=
((
frame_parms
->
nushift
+
6
)
%
12
))
&&
(
i
!=
((
frame_parms
->
nushift
+
9
)
%
12
)))
{
dl_ch0_ext
[
j
]
=
dl_ch0p
[
i
];
dl_ch1_ext
[
j
]
=
dl_ch1p
[
i
];
rxF_ext
[
j
++
]
=
rxF
[(
1
+
i
-
6
)];
//printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[1+i-6],*(1+(short*)&rxF[1+i-6]));
rxF_ext
[
j
++
]
=
rxF
[
i
-
6
];
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"(pilots)extract rb %d, re %d (%d) => (%d,%d)
\n
"
,
prb
,
i
,
j
,
*
(
short
*
)
&
rxF
[
1
+
i
-
6
],
*
(
1
+
(
short
*
)
&
rxF
[
1
+
i
-
6
]));
#endif
}
}
...
...
@@ -4038,7 +4182,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
dl_ch1_ext
+=
8
;
rxF_ext
+=
8
;
}
//pilots==1
nb_rb
++
;
}
// if Middle PRB
}
// if odd PRB
}
// if rballoc==1
...
...
@@ -4126,7 +4269,7 @@ void dump_dlsch2(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per
#endif
#ifdef DEBUG_DLSCH_DEMOD
/*
void print_bytes(char *s,__m128i *x)
{
...
...
@@ -4164,5 +4307,5 @@ void print_ints(char *s,__m128i *x)
printf("%s : %d,%d,%d,%d\n",s,
tempb[0],tempb[1],tempb[2],tempb[3]);
}
}
*/
#endif
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
View file @
fb902d98
...
...
@@ -662,16 +662,17 @@ int dlsch_qpsk_llr(LTE_DL_FRAME_PARMS *frame_parms,
if
((
symbol_mod
==
0
)
||
(
symbol_mod
==
(
4
-
frame_parms
->
Ncp
)))
{
if
(
frame_parms
->
mode1_flag
==
0
)
len
=
(
nb_rb
*
8
)
;
//
- (2*pbch_pss_sss_adjust/3);
len
=
(
nb_rb
*
8
)
-
(
2
*
pbch_pss_sss_adjust
/
3
);
else
len
=
(
nb_rb
*
10
)
;
//
- (5*pbch_pss_sss_adjust/6);
len
=
(
nb_rb
*
10
)
-
(
5
*
pbch_pss_sss_adjust
/
6
);
}
else
{
len
=
(
nb_rb
*
12
)
;
//
- pbch_pss_sss_adjust;
len
=
(
nb_rb
*
12
)
-
pbch_pss_sss_adjust
;
}
// printf("dlsch_qpsk_llr: symbol %d,nb_rb %d, len %d,pbch_pss_sss_adjust %d\n",symbol,nb_rb,len,pbch_pss_sss_adjust);
// printf("dlsch_qpsk_llr: symbol %d,nb_rb %d, len %d,pbch_pss_sss_adjust %d\n",symbol,nb_rb,len,pbch_pss_sss_adjust);
for
(
i
=
0
;
i
<
len
;
i
++
)
{
*
llr32
=
*
rxF
;
// printf("llr %d : (%d,%d)\n",i,((int16_t*)llr32)[0],((int16_t*)llr32)[1]);
rxF
++
;
llr32
++
;
}
...
...
openair3/TEST/test_kdf.c
View file @
fb902d98
...
...
@@ -42,9 +42,9 @@ static
void
do_kdf
(
uint8_t
*
key
,
unsigned
key_length
,
uint8_t
*
data
,
unsigned
data_length
,
uint8_t
*
exp
,
unsigned
exp_length
)
{
uint8_t
*
result
;
uint8_t
result
[
32
]
;
kdf
(
key
,
key_length
,
data
,
data_length
,
&
result
,
32
);
kdf
(
key
,
key_length
,
data
,
data_length
,
result
,
32
);
if
(
compare_buffer
(
result
,
exp_length
,
exp
,
exp_length
)
!=
0
)
{
fail
(
"Fail: kdf
\n
"
);
...
...
openair3/TEST/test_secu_kenb.c
View file @
fb902d98
...
...
@@ -39,15 +39,15 @@ static
void
do_derive_kenb
(
uint32_t
nas_count
,
const
uint8_t
*
kasme
,
const
unsigned
length
,
const
uint8_t
*
kenb_exp
)
{
uint8_t
*
kenb
;
uint8_t
kenb
[
32
]
;
derive_keNB
(
kasme
,
nas_count
,
&
kenb
);
memset
(
kenb
,
0
,
sizeof
(
kenb
));
derive_keNB
(
kasme
,
nas_count
,
kenb
);
if
(
compare_buffer
(
kenb_exp
,
length
,
kenb
,
length
)
!=
0
)
{
fail
(
"Fail: kenb derivation
\n
"
);
}
free
(
kenb
);
}
void
doit
(
void
)
...
...
openair3/TEST/test_secu_knas.c
View file @
fb902d98
...
...
@@ -39,21 +39,23 @@ static
void
derive_knas_keys
(
algorithm_type_dist_t
atd
,
uint8_t
*
kasme
,
unsigned
length
,
uint8_t
*
knas_enc_exp
,
uint8_t
*
knas_int_exp
)
{
uint8_t
*
knas_enc
;
uint8_t
*
knas_int
;
uint8_t
*
knas_enc
=
NULL
;
uint8_t
*
knas_int
=
NULL
;
derive_key_nas_enc
(
atd
,
kasme
,
&
knas_enc
);
derive_key_nas_int
(
atd
,
kasme
,
&
knas_int
);
knas_enc
=
calloc
(
1
,
32
);
knas_int
=
calloc
(
1
,
32
);
derive_key_nas_enc
(
atd
,
kasme
,
knas_enc
);
derive_key_nas_int
(
atd
,
kasme
,
knas_int
);
/* Compare both keys with expected */
if
(
compare_buffer
(
knas_enc
,
32
,
knas_enc_exp
,
32
)
!=
0
)
{
if
(
compare_buffer
(
knas_enc
,
16
,
&
knas_enc_exp
[
16
],
16
)
!=
0
)
{
fail
(
"Fail: knas_enc derivation
\n
"
);
}
if
(
compare_buffer
(
knas_int
,
32
,
knas_int_exp
,
32
)
!=
0
)
{
if
(
compare_buffer
(
knas_int
,
16
,
&
knas_int_exp
[
16
],
16
)
!=
0
)
{
fail
(
"Fail: knas_int derivation
\n
"
);
}
free
(
knas_enc
);
free
(
knas_int
);
}
...
...
openair3/TEST/test_secu_knas_encrypt_eea1.c
View file @
fb902d98
...
...
@@ -40,14 +40,15 @@ void eea1_encrypt(uint8_t direction, uint32_t count,
uint8_t
bearer
,
uint8_t
*
key
,
uint32_t
key_length
,
uint8_t
*
message
,
uint32_t
length
,
uint8_t
*
expected
)
{
nas_stream_cipher_t
*
nas_cipher
;
uint8_t
*
result
;
uint32_t
zero_bits
=
length
&
7
;
uint32_t
byte_length
=
length
>>
3
;
nas_stream_cipher_t
*
nas_cipher
=
NULL
;
uint8_t
*
result
=
NULL
;
uint32_t
zero_bits
=
length
&
7
;
uint32_t
byte_length
=
length
>>
3
;
if
(
zero_bits
>
0
)
byte_length
+=
1
;
result
=
calloc
(
1
,
byte_length
);
nas_cipher
=
calloc
(
1
,
sizeof
(
nas_stream_cipher_t
));
nas_cipher
->
direction
=
direction
;
...
...
@@ -58,7 +59,7 @@ void eea1_encrypt(uint8_t direction, uint32_t count,
nas_cipher
->
blength
=
length
;
nas_cipher
->
message
=
message
;
if
(
nas_stream_encrypt_eea1
(
nas_cipher
,
&
result
)
!=
0
)
if
(
nas_stream_encrypt_eea1
(
nas_cipher
,
result
)
!=
0
)
fail
(
"Fail: nas_stream_encrypt_eea1
\n
"
);
if
(
compare_buffer
(
result
,
byte_length
,
expected
,
byte_length
)
!=
0
)
{
...
...
openair3/TEST/test_secu_knas_encrypt_eea2.c
View file @
fb902d98
...
...
@@ -40,14 +40,15 @@ void eea2_encrypt(uint8_t direction, uint32_t count,
uint8_t
bearer
,
uint8_t
*
key
,
uint32_t
key_length
,
uint8_t
*
message
,
uint32_t
length
,
uint8_t
*
expected
)
{
nas_stream_cipher_t
*
nas_cipher
;
uint8_t
*
result
;
uint32_t
zero_bits
=
length
&
7
;
uint32_t
byte_length
=
length
>>
3
;
nas_stream_cipher_t
*
nas_cipher
=
NULL
;
uint8_t
*
result
=
NULL
;
uint32_t
zero_bits
=
length
&
7
;
uint32_t
byte_length
=
length
>>
3
;
if
(
zero_bits
>
0
)
byte_length
+=
1
;
result
=
calloc
(
1
,
byte_length
);
nas_cipher
=
calloc
(
1
,
sizeof
(
nas_stream_cipher_t
));
nas_cipher
->
direction
=
direction
;
...
...
@@ -58,7 +59,7 @@ void eea2_encrypt(uint8_t direction, uint32_t count,
nas_cipher
->
blength
=
length
;
nas_cipher
->
message
=
message
;
if
(
nas_stream_encrypt_eea2
(
nas_cipher
,
&
result
)
!=
0
)
if
(
nas_stream_encrypt_eea2
(
nas_cipher
,
result
)
!=
0
)
fail
(
"Fail: nas_stream_encrypt_eea2
\n
"
);
if
(
compare_buffer
(
result
,
byte_length
,
expected
,
byte_length
)
!=
0
)
{
...
...
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