Commit bc489db8 authored by Ben Wojtowicz's avatar Ben Wojtowicz

Version 0.17.1: Added SIB13 packing and printing for LTE_fdd_dl_file_scan and...

Version 0.17.1: Added SIB13 packing and printing for LTE_fdd_dl_file_scan and pulled in a patch from Andrew Murphy to add SIB13 unpacking and printing for LTE_fdd_dl_scan.
parent cb2ac40c
Ben Wojtowicz, bwojtowi@gmail.com
Andrew Murphy, andrew.murphy@rd.bbc.co.uk (DCI 1C Unpack)
Andrew Murphy, andrew.murphy@rd.bbc.co.uk (DCI 1C Unpack, SIB13 unpack/print)
......@@ -23,7 +23,7 @@
########################################################################
cmake_minimum_required(VERSION 2.6)
project(openLTE CXX C)
set(openLTE_version 0.17.0)
set(openLTE_version 0.17.1)
enable_testing()
#select the release build type by default to get optimization flags
......
......@@ -135,3 +135,6 @@ v00.17.00 Added more MME and RRC decoding and encoding and integrity protect
and user file support, PDCP security, RRC security mode command,
SRB2 setup, RRC connection reconfiguration, MME EMM attach, MME
ESM default bearer setup, and M-TMSI assignment to LTE_fdd_enodeb.
v00.18.00 Added SIB13 packing and printing for LTE_fdd_dl_file_scan and
pulled in a patch from Andrew Murphy to add SIB13 unpacking and
printing for LTE_fdd_dl_scan.
......@@ -40,6 +40,7 @@
09/28/2013 Ben Wojtowicz Added support for setting the sample rate
and input data type.
06/15/2014 Ben Wojtowicz Using the latest LTE library.
11/09/2014 Ben Wojtowicz Added SIB13 printing.
*******************************************************************************/
......@@ -160,6 +161,8 @@ private:
bool sib7_expected;
bool sib8_printed;
bool sib8_expected;
bool sib13_printed;
bool sib13_expected;
// Helpers
void init(void);
......@@ -174,6 +177,7 @@ private:
void print_sib6(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_6_STRUCT *sib6);
void print_sib7(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_7_STRUCT *sib7);
void print_sib8(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_8_STRUCT *sib8);
void print_sib13(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT *sib13);
void print_page(LIBLTE_RRC_PAGING_STRUCT *page);
// Configuration
......
......@@ -49,6 +49,7 @@
and input data type.
03/26/2014 Ben Wojtowicz Using the latest LTE library.
11/01/2014 Ben Wojtowicz Using the latest LTE library.
11/09/2014 Ben Wojtowicz Added SIB13 printing.
*******************************************************************************/
......@@ -263,15 +264,16 @@ int32 LTE_fdd_dl_fs_samp_buf::work(int32 ninput_items,
while(samp_buf_r_idx < (samp_buf_w_idx - num_samps_needed))
{
if(mib_printed == true &&
sib1_printed == true &&
sib2_printed == true &&
sib3_printed == sib3_expected &&
sib4_printed == sib4_expected &&
sib5_printed == sib5_expected &&
sib6_printed == sib6_expected &&
sib7_printed == sib7_expected &&
sib8_printed == sib8_expected)
if(mib_printed == true &&
sib1_printed == true &&
sib2_printed == true &&
sib3_printed == sib3_expected &&
sib4_printed == sib4_expected &&
sib5_printed == sib5_expected &&
sib6_printed == sib6_expected &&
sib7_printed == sib7_expected &&
sib8_printed == sib8_expected &&
sib13_printed == sib13_expected)
{
corr_peak_idx++;
init();
......@@ -544,6 +546,9 @@ int32 LTE_fdd_dl_fs_samp_buf::work(int32 ninput_items,
case LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_8:
print_sib8((LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_8_STRUCT *)&bcch_dlsch_msg.sibs[i].sib);
break;
case LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13:
print_sib13((LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT *)&bcch_dlsch_msg.sibs[i].sib);
break;
default:
printf("Not handling SIB %u\n", bcch_dlsch_msg.sibs[i].sib_type);
break;
......@@ -645,6 +650,8 @@ void LTE_fdd_dl_fs_samp_buf::init(void)
sib7_expected = false;
sib8_printed = false;
sib8_expected = false;
sib13_printed = false;
sib13_expected = false;
}
void LTE_fdd_dl_fs_samp_buf::copy_input_to_samp_buf(gr_vector_const_void_star &input_items, int32 ninput_items)
......@@ -735,14 +742,15 @@ void LTE_fdd_dl_fs_samp_buf::print_sib1(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_1_STRUCT
prev_si_value_tag != sib1->system_info_value_tag)
{
printf("\tSystem Info value tag changed\n");
sib1_printed = false;
sib2_printed = false;
sib3_printed = false;
sib4_printed = false;
sib5_printed = false;
sib6_printed = false;
sib7_printed = false;
sib8_printed = false;
sib1_printed = false;
sib2_printed = false;
sib3_printed = false;
sib4_printed = false;
sib5_printed = false;
sib6_printed = false;
sib7_printed = false;
sib8_printed = false;
sib13_printed = false;
}
if(false == sib1_printed)
......@@ -848,6 +856,9 @@ void LTE_fdd_dl_fs_samp_buf::print_sib1(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_1_STRUCT
case LIBLTE_RRC_SIB_TYPE_8:
sib8_expected = true;
break;
case LIBLTE_RRC_SIB_TYPE_13_v920:
sib13_expected = true;
break;
}
}
}
......@@ -1694,6 +1705,35 @@ void LTE_fdd_dl_fs_samp_buf::print_sib8(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_8_STRUCT
}
}
void LTE_fdd_dl_fs_samp_buf::print_sib13(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT *sib13)
{
uint32 i;
if(false == sib13_printed)
{
printf("\tSIB13 Decoded:\n");
printf("\t\tMBSFN Area Info List R9:\n");
for(i=0; i<sib13->mbsfn_area_info_list_r9_size; i++)
{
printf("\t\t\t%-40s=%20u\n", "MBSFN Area ID R9", sib13->mbsfn_area_info_list_r9[i].mbsfn_area_id_r9);
printf("\t\t\t%-40s=%20s\n", "Non-MBSFN Region Length", liblte_rrc_non_mbsfn_region_length_text[sib13->mbsfn_area_info_list_r9[i].non_mbsfn_region_length]);
printf("\t\t\t%-40s=%20u\n", "Notification Indicator R9", sib13->mbsfn_area_info_list_r9[i].notification_indicator_r9);
printf("\t\t\t%-40s=%20s\n", "MCCH Repetition Period R9", liblte_rrc_mcch_repetition_period_r9_text[sib13->mbsfn_area_info_list_r9[i].mcch_repetition_period_r9]);
printf("\t\t\t%-40s=%20u\n", "MCCH Offset R9", sib13->mbsfn_area_info_list_r9[i].mcch_offset_r9);
printf("\t\t\t%-40s=%20s\n", "MCCH Modification Period R9", liblte_rrc_mcch_modification_period_r9_text[sib13->mbsfn_area_info_list_r9[i].mcch_modification_period_r9]);
printf("\t\t\t%-40s=%20u\n", "SF Alloc Info R9", sib13->mbsfn_area_info_list_r9[i].sf_alloc_info_r9);
printf("\t\t\t%-40s=%20s\n", "Signalling MCS R9", liblte_rrc_mcch_signalling_mcs_r9_text[sib13->mbsfn_area_info_list_r9[i].signalling_mcs_r9]);
}
printf("\t\t%-40s=%20s\n", "Repetition Coeff", liblte_rrc_notification_repetition_coeff_r9_text[sib13->mbms_notification_config.repetition_coeff]);
printf("\t\t%-40s=%20u\n", "Offset", sib13->mbms_notification_config.offset);
printf("\t\t%-40s=%20u\n", "SF Index", sib13->mbms_notification_config.sf_index);
sib13_printed = true;
}
}
void LTE_fdd_dl_fs_samp_buf::print_page(LIBLTE_RRC_PAGING_STRUCT *page)
{
uint32 i;
......
/*******************************************************************************
Copyright 2013-2014 Ben Wojtowicz
Copyright 2014 Andrew Murphy (SIB13 printing)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
......@@ -27,6 +28,7 @@
02/26/2013 Ben Wojtowicz Created file
07/21/2013 Ben Wojtowicz Added support for decoding SIBs.
06/15/2014 Ben Wojtowicz Added PCAP support.
09/19/2014 Andrew Murphy Added SIB13 printing.
*******************************************************************************/
......@@ -94,6 +96,7 @@ public:
void send_ctrl_sib6_decoded_msg(LTE_FDD_DL_SCAN_CHAN_DATA_STRUCT *chan_data, LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_6_STRUCT *sib6, uint32 sfn);
void send_ctrl_sib7_decoded_msg(LTE_FDD_DL_SCAN_CHAN_DATA_STRUCT *chan_data, LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_7_STRUCT *sib7, uint32 sfn);
void send_ctrl_sib8_decoded_msg(LTE_FDD_DL_SCAN_CHAN_DATA_STRUCT *chan_data, LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_8_STRUCT *sib8, uint32 sfn);
void send_ctrl_sib13_decoded_msg(LTE_FDD_DL_SCAN_CHAN_DATA_STRUCT *chan_data, LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT *sib13, uint32 sfn);
void send_ctrl_channel_found_end_msg(LTE_FDD_DL_SCAN_CHAN_DATA_STRUCT *chan_data);
void send_ctrl_channel_not_found_msg(void);
void send_ctrl_status_msg(LTE_FDD_DL_SCAN_STATUS_ENUM status, std::string msg);
......
/*******************************************************************************
Copyright 2013-2014 Ben Wojtowicz
Copyright 2014 Andrew Murphy (SIB13 printing)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
......@@ -27,6 +28,7 @@
02/26/2013 Ben Wojtowicz Created file
07/21/2013 Ben Wojtowicz Added support for decoding SIBs.
06/15/2014 Ben Wojtowicz Added PCAP support.
09/19/2014 Andrew Murphy Added SIB13 printing.
11/01/2014 Ben Wojtowicz Using the latest LTE library.
*******************************************************************************/
......@@ -1268,6 +1270,56 @@ void LTE_fdd_dl_scan_interface::send_ctrl_sib8_decoded_msg(LTE_FDD_DL_SCAN_CHAN_
ctrl_socket->send(tmp_msg);
}
}
void LTE_fdd_dl_scan_interface::send_ctrl_sib13_decoded_msg(LTE_FDD_DL_SCAN_CHAN_DATA_STRUCT *chan_data,
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT *sib13,
uint32 sfn)
{
boost::mutex::scoped_lock lock(connect_mutex);
std::string tmp_msg;
uint32 i;
if(ctrl_connected)
{
tmp_msg = "info sib13_decoded ";
try
{
tmp_msg += "freq=" + boost::lexical_cast<std::string>(liblte_interface_dl_earfcn_to_frequency(current_dl_earfcn)) + " ";
tmp_msg += "dl_earfcn=" + boost::lexical_cast<std::string>(current_dl_earfcn) + " ";
tmp_msg += "freq_offset=" + boost::lexical_cast<std::string>(chan_data->freq_offset) + " ";
tmp_msg += "phys_cell_id=" + boost::lexical_cast<std::string>(chan_data->N_id_cell) + " ";
tmp_msg += "sfn=" + boost::lexical_cast<std::string>(sfn) + " ";
for(i=0; i<sib13->mbsfn_area_info_list_r9_size; i++)
{
tmp_msg += "mbsfn_area_id_r9[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>((uint32)sib13->mbsfn_area_info_list_r9[i].mbsfn_area_id_r9) + " ";
tmp_msg += "non_mbsfn_region_length[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>(liblte_rrc_non_mbsfn_region_length_text[sib13->mbsfn_area_info_list_r9[i].non_mbsfn_region_length]) + " ";
tmp_msg += "notification_indicator_r9[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>((uint32)sib13->mbsfn_area_info_list_r9[i].notification_indicator_r9) + " ";
tmp_msg += "mcch_repetition_period_r9[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>(liblte_rrc_mcch_repetition_period_r9_text[sib13->mbsfn_area_info_list_r9[i].mcch_repetition_period_r9]) + " ";
tmp_msg += "mcch_offset_r9[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>((uint32)sib13->mbsfn_area_info_list_r9[i].mcch_offset_r9) + " ";
tmp_msg += "mcch_modification_period_r9[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>(liblte_rrc_mcch_modification_period_r9_text[sib13->mbsfn_area_info_list_r9[i].mcch_modification_period_r9]) + " ";
tmp_msg += "sf_alloc_info_r9[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>((uint32)sib13->mbsfn_area_info_list_r9[i].sf_alloc_info_r9) + " ";
tmp_msg += "signalling_mcs_r9[" + boost::lexical_cast<std::string>(i) + "]=";
tmp_msg += boost::lexical_cast<std::string>(liblte_rrc_mcch_signalling_mcs_r9_text[sib13->mbsfn_area_info_list_r9[i].signalling_mcs_r9]) + " ";
}
tmp_msg += "repetition_coeff=" + boost::lexical_cast<std::string>(liblte_rrc_notification_repetition_coeff_r9_text[sib13->mbms_notification_config.repetition_coeff]) + " ";
tmp_msg += "offset=" + boost::lexical_cast<std::string>((uint32)sib13->mbms_notification_config.offset) + " ";
tmp_msg += "sf_index=" + boost::lexical_cast<std::string>((uint32)sib13->mbms_notification_config.sf_index) + " ";
tmp_msg += "\n";
}catch(boost::bad_lexical_cast &){
tmp_msg += "\n";
}
ctrl_socket->send(tmp_msg);
}
}
void LTE_fdd_dl_scan_interface::send_ctrl_channel_found_end_msg(LTE_FDD_DL_SCAN_CHAN_DATA_STRUCT *chan_data)
{
boost::mutex::scoped_lock lock(connect_mutex);
......
/*******************************************************************************
Copyright 2012-2014 Ben Wojtowicz
Copyright 2014 Andrew Murphy (SIB13 unpack)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
......@@ -42,7 +43,9 @@
05/04/2014 Ben Wojtowicz Added support for DL CCCH Messages.
06/15/2014 Ben Wojtowicz Added support for UL DCCH Messages.
08/03/2014 Ben Wojtowicz Added more decoding/encoding.
09/19/2014 Andrew Murphy Added SIB13 unpack.
11/01/2014 Ben Wojtowicz Added more decoding/encoding.
11/09/2014 Ben Wojtowicz Added SIB13 pack.
*******************************************************************************/
......@@ -109,10 +112,56 @@ LIBLTE_ERROR_ENUM liblte_rrc_unpack_mbsfn_notification_config_ie(uint8
Document Reference: 36.331 v10.0.0 Section 6.3.7
*********************************************************************/
// Defines
// Enums
// Structs
// Functions
// FIXME
#define LIBLTE_RRC_MAX_MBSFN_AREAS 8
// Enums
typedef enum{
LIBLTE_RRC_NON_MBSFN_REGION_LENGTH_S1 = 0,
LIBLTE_RRC_NON_MBSFN_REGION_LENGTH_S2,
LIBLTE_RRC_NON_MBSFN_REGION_LENGTH_N_ITEMS,
}LIBLTE_RRC_NON_MBSFN_REGION_LENGTH_ENUM;
static const char liblte_rrc_non_mbsfn_region_length_text[LIBLTE_RRC_NON_MBSFN_REGION_LENGTH_N_ITEMS][20] = {"1", "2"};
static const uint8 liblte_rrc_non_mbsfn_region_length_num[LIBLTE_RRC_NON_MBSFN_REGION_LENGTH_N_ITEMS] = {1, 2};
typedef enum{
LIBLTE_RRC_MCCH_REPETITION_PERIOD_RF32 = 0,
LIBLTE_RRC_MCCH_REPETITION_PERIOD_RF64,
LIBLTE_RRC_MCCH_REPETITION_PERIOD_RF128,
LIBLTE_RRC_MCCH_REPETITION_PERIOD_RF256,
LIBLTE_RRC_MCCH_REPETITION_PERIOD_N_ITEMS,
}LIBLTE_RRC_MCCH_REPETITION_PERIOD_ENUM;
static const char liblte_rrc_mcch_repetition_period_r9_text[LIBLTE_RRC_MCCH_REPETITION_PERIOD_N_ITEMS][20] = {"32", "64", "128", "256"};
static const uint16 liblte_rrc_mcch_repetition_period_r9_num[LIBLTE_RRC_MCCH_REPETITION_PERIOD_N_ITEMS] = {32, 64, 128, 256};
typedef enum{
LIBLTE_RRC_MCCH_MODIFICATION_PERIOD_512 = 0,
LIBLTE_RRC_MCCH_MODIFICATION_PERIOD_1024,
LIBLTE_RRC_MCCH_MODIFICATION_PERIOD_N_ITEMS,
}LIBLTE_RRC_MCCH_MODIFICATION_PERIOD_ENUM;
static const char liblte_rrc_mcch_modification_period_r9_text[LIBLTE_RRC_MCCH_MODIFICATION_PERIOD_N_ITEMS][20] = {"512", "1024"};
static const uint16 liblte_rrc_mcch_modification_period_r9_num[LIBLTE_RRC_MCCH_MODIFICATION_PERIOD_N_ITEMS] = {512, 1024};
typedef enum{
LIBLTE_RRC_MCCH_SIGNALLING_MCS_N2 = 0,
LIBLTE_RRC_MCCH_SIGNALLING_MCS_N7,
LIBLTE_RRC_MCCH_SIGNALLING_MCS_N13,
LIBLTE_RRC_MCCH_SIGNALLING_MCS_N19,
LIBLTE_RRC_MCCH_SIGNALLING_MCS_N_ITEMS,
}LIBLTE_RRC_MCCH_SIGNALLING_MCS_ENUM;
static const char liblte_rrc_mcch_signalling_mcs_r9_text[LIBLTE_RRC_MCCH_SIGNALLING_MCS_N_ITEMS][20] = {"2", "7", "13", "19"};
static const uint8 liblte_rrc_mcch_signalling_mcs_r9_num[LIBLTE_RRC_MCCH_SIGNALLING_MCS_N_ITEMS] = {2, 7, 13, 19};
// Structs
typedef struct{
LIBLTE_RRC_NON_MBSFN_REGION_LENGTH_ENUM non_mbsfn_region_length;
LIBLTE_RRC_MCCH_REPETITION_PERIOD_ENUM mcch_repetition_period_r9;
LIBLTE_RRC_MCCH_MODIFICATION_PERIOD_ENUM mcch_modification_period_r9;
LIBLTE_RRC_MCCH_SIGNALLING_MCS_ENUM signalling_mcs_r9;
uint8 mbsfn_area_id_r9;
uint8 notification_indicator_r9;
uint8 mcch_offset_r9;
uint8 sf_alloc_info_r9;
}LIBLTE_RRC_MBSFN_AREA_INFO_STRUCT;
// Functions
LIBLTE_ERROR_ENUM liblte_rrc_pack_mbsfn_area_info_ie(LIBLTE_RRC_MBSFN_AREA_INFO_STRUCT *mbsfn_area_info,
uint8 **ie_ptr);
LIBLTE_ERROR_ENUM liblte_rrc_unpack_mbsfn_area_info_ie(uint8 **ie_ptr,
LIBLTE_RRC_MBSFN_AREA_INFO_STRUCT *mbsfn_area_info);
/*********************************************************************
IE Name: MBSFN Subframe Config
......@@ -5197,8 +5246,16 @@ LIBLTE_ERROR_ENUM liblte_rrc_unpack_sys_info_block_type_8_ie(uint8
// Defines
// Enums
// Structs
typedef struct{
LIBLTE_RRC_MBSFN_AREA_INFO_STRUCT mbsfn_area_info_list_r9[LIBLTE_RRC_MAX_MBSFN_AREAS];
LIBLTE_RRC_MBSFN_NOTIFICATION_CONFIG_STRUCT mbms_notification_config;
uint8 mbsfn_area_info_list_r9_size;
}LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT;
// Functions
// FIXME
LIBLTE_ERROR_ENUM liblte_rrc_pack_sys_info_block_type_13_ie(LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT *sib13,
uint8 **ie_ptr);
LIBLTE_ERROR_ENUM liblte_rrc_unpack_sys_info_block_type_13_ie(uint8 **ie_ptr,
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT *sib13);
/*******************************************************************************
MESSAGE DECLARATIONS
......@@ -5491,14 +5548,15 @@ static const char liblte_rrc_sys_info_block_type_text[LIBLTE_RRC_SYS_INFO_BLOCK_
static const uint8 liblte_rrc_sys_info_block_type_num[LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_N_ITEMS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1};
// Structs
typedef union{
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_1_STRUCT sib1;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_2_STRUCT sib2;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_3_STRUCT sib3;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_4_STRUCT sib4;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_5_STRUCT sib5;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_6_STRUCT sib6;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_7_STRUCT sib7;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_8_STRUCT sib8;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_1_STRUCT sib1;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_2_STRUCT sib2;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_3_STRUCT sib3;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_4_STRUCT sib4;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_5_STRUCT sib5;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_6_STRUCT sib6;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_7_STRUCT sib7;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_8_STRUCT sib8;
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_13_STRUCT sib13;
}LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_UNION;
typedef struct{
LIBLTE_RRC_SYS_INFO_BLOCK_TYPE_UNION sib;
......
This diff is collapsed.
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