mirror of https://github.com/PentHertz/srsLTE.git
ssb_file_test: make duplex and SSB SCS configurable, add new unit test for FDD+15kHz SCS
This commit is contained in:
parent
800933c38e
commit
573b2f657a
|
@ -164,4 +164,6 @@ target_link_libraries(ssb_file_test srsran_phy)
|
||||||
|
|
||||||
# File test 1
|
# File test 1
|
||||||
# Captured with command: lib/examples/usrp_capture -a type=x300,clock=external,sampling_rate=46.08e6,rx_subdev_spec=B:0 -g 20 -r 46.08e6 -n 460800 -f 3502.8e6 -o /tmp/n78.fo35028.fs2304M.data
|
# Captured with command: lib/examples/usrp_capture -a type=x300,clock=external,sampling_rate=46.08e6,rx_subdev_spec=B:0 -g 20 -r 46.08e6 -n 460800 -f 3502.8e6 -o /tmp/n78.fo35028.fs2304M.data
|
||||||
add_nr_test(ssb_file_test ssb_file_test -i ${CMAKE_CURRENT_SOURCE_DIR}/n78.fo35028.fs4608M.data -v -r 46.08e6 -f 3502.8e6 -F 3512.64e6 -n 460800 -A 500 357802 2 0 1 0)
|
add_nr_test(ssb_file_test_tdd ssb_file_test -i ${CMAKE_CURRENT_SOURCE_DIR}/n78.fo35028.fs4608M.data -v -r 46.08e6 -f 3502.8e6 -F 3512.64e6 -n 460800 -A 500 357802 2 0 1 0)
|
||||||
|
# Capture with third-party gNB on band n3 (FDD) 15kHz SSB SCS, f_s=15.36e6, f_c=1842.5e6, f_c_ssb=1842.05e6, PCI=500
|
||||||
|
add_nr_test(ssb_file_test_fdd ssb_file_test -i ${CMAKE_CURRENT_SOURCE_DIR}/../../ue/test/ue_dl_nr_pci500_rb52_si_coreset0_idx6_s15.36e6.dat -v -r 15.36e6 -f 1842.5e6 -F 1842.05e6 -n 15360 -d fdd -s 15 -A 500 2200 0 0 0 0)
|
|
@ -29,7 +29,7 @@ static char* filename = NULL;
|
||||||
static double srate_hz = 23.04e6; // Base-band sampling rate in Hz
|
static double srate_hz = 23.04e6; // Base-band sampling rate in Hz
|
||||||
static double center_freq_hz = NAN; // Center frequency in Hz
|
static double center_freq_hz = NAN; // Center frequency in Hz
|
||||||
static double ssb_freq_hz = NAN; // SSB frequency in Hz
|
static double ssb_freq_hz = NAN; // SSB frequency in Hz
|
||||||
static uint32_t nof_samples = 0; // Number of half-frames
|
static uint32_t nof_samples = 0; // Number of samples
|
||||||
|
|
||||||
// Assertion
|
// Assertion
|
||||||
static bool assert = false;
|
static bool assert = false;
|
||||||
|
@ -44,9 +44,11 @@ static void usage(char* prog)
|
||||||
{
|
{
|
||||||
printf("Usage: %s -i filename [rv]\n", prog);
|
printf("Usage: %s -i filename [rv]\n", prog);
|
||||||
printf("\t-r sampling rate in Hz [Default %.2f MHz]\n", srate_hz / 1e6);
|
printf("\t-r sampling rate in Hz [Default %.2f MHz]\n", srate_hz / 1e6);
|
||||||
|
printf("\t-n number of samples [Default %d]\n", nof_samples);
|
||||||
|
printf("\t-s SSB subcarrier spacing (15, 30) [Default %s]\n", srsran_subcarrier_spacing_to_str(ssb_scs));
|
||||||
|
printf("\t-d duplex mode [Default %s]\n", duplex_mode == SRSRAN_DUPLEX_MODE_FDD ? "FDD" : "TDD");
|
||||||
printf("\t-f absolute baseband center frequency in Hz [Default %.2f MHz]\n", center_freq_hz / 1e3);
|
printf("\t-f absolute baseband center frequency in Hz [Default %.2f MHz]\n", center_freq_hz / 1e3);
|
||||||
printf("\t-F absolute SSB center freuqency in Hz [Default %.2f MHz]\n", ssb_freq_hz / 1e3);
|
printf("\t-F absolute SSB center freuqency in Hz [Default %.2f MHz]\n", ssb_freq_hz / 1e3);
|
||||||
printf("\t-F absolute SSB center freuqency in Hz [Default %.2f MHz]\n", ssb_freq_hz / 1e3);
|
|
||||||
printf("\t-A Assert: PCI t_offset sfn_lsb ssb_idx ssb_k hrf");
|
printf("\t-A Assert: PCI t_offset sfn_lsb ssb_idx ssb_k hrf");
|
||||||
printf("\t-v [set srsran_verbose to debug, default none]\n");
|
printf("\t-v [set srsran_verbose to debug, default none]\n");
|
||||||
}
|
}
|
||||||
|
@ -54,7 +56,7 @@ static void usage(char* prog)
|
||||||
static void parse_args(int argc, char** argv)
|
static void parse_args(int argc, char** argv)
|
||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
while ((opt = getopt(argc, argv, "inrfFAv")) != -1) {
|
while ((opt = getopt(argc, argv, "insdrfFAv")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'i':
|
case 'i':
|
||||||
filename = argv[optind];
|
filename = argv[optind];
|
||||||
|
@ -62,6 +64,24 @@ static void parse_args(int argc, char** argv)
|
||||||
case 'n':
|
case 'n':
|
||||||
nof_samples = (uint32_t)strtol(argv[optind], NULL, 10);
|
nof_samples = (uint32_t)strtol(argv[optind], NULL, 10);
|
||||||
break;
|
break;
|
||||||
|
case 's':
|
||||||
|
if ((uint32_t)strtol(argv[optind], NULL, 10) == 15) {
|
||||||
|
ssb_scs = srsran_subcarrier_spacing_15kHz;
|
||||||
|
} else {
|
||||||
|
ssb_scs = srsran_subcarrier_spacing_30kHz;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
if (strcmp(argv[optind], "tdd") == 0) {
|
||||||
|
duplex_mode = SRSRAN_DUPLEX_MODE_TDD;
|
||||||
|
} else if (strcmp(argv[optind], "fdd") == 0) {
|
||||||
|
duplex_mode = SRSRAN_DUPLEX_MODE_FDD;
|
||||||
|
} else {
|
||||||
|
printf("Invalid duplex mode '%s'\n", argv[optind]);
|
||||||
|
usage(argv[0]);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
srate_hz = strtod(argv[optind], NULL);
|
srate_hz = strtod(argv[optind], NULL);
|
||||||
break;
|
break;
|
||||||
|
@ -195,6 +215,17 @@ int main(int argc, char** argv)
|
||||||
str,
|
str,
|
||||||
search_res.pbch_msg.crc ? "OK" : "KO");
|
search_res.pbch_msg.crc ? "OK" : "KO");
|
||||||
|
|
||||||
|
// unpack MIB
|
||||||
|
srsran_mib_nr_t mib = {};
|
||||||
|
if (srsran_pbch_msg_nr_mib_unpack(&search_res.pbch_msg, &mib) < SRSRAN_SUCCESS) {
|
||||||
|
ERROR("Error unpacking PBCH-MIB");
|
||||||
|
goto clean_exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
char mib_info[512] = {};
|
||||||
|
srsran_pbch_msg_nr_mib_info(&mib, mib_info, sizeof(mib_info));
|
||||||
|
INFO("PBCH-MIB: %s", mib_info);
|
||||||
|
|
||||||
// Assert search
|
// Assert search
|
||||||
if (assert) {
|
if (assert) {
|
||||||
if (assert_search(&search_res)) {
|
if (assert_search(&search_res)) {
|
||||||
|
|
Loading…
Reference in New Issue