@ -1805,8 +1805,9 @@ int set_derived_args_nr(all_args_t* args_, rrc_nr_cfg_t* rrc_nr_cfg_, phy_cfg_t*
return SRSRAN_ERROR ;
}
if ( rrc_nr_cfg_ - > is_standalone ) {
if ( cfg . phy_cell . carrier . dl_center_frequency_hz ! = 1842.5e6 ) {
ERROR ( " Only DL-ARFCN 368500 supported. " ) ;
if ( is_valid_arfcn ( cfg . band , cfg . dl_arfcn ) = = false ) {
ERROR ( " DL-ARFCN %d in band n%d not supported with coreset0 config. " , cfg . dl_arfcn , cfg . band ) ;
ERROR ( " Valid ARFCNs for band n%d are: %s " , cfg . band , valid_arfcns_to_string ( cfg . band ) . c_str ( ) ) ;
return SRSRAN_ERROR ;
}
if ( cfg . duplex_mode = = SRSRAN_DUPLEX_MODE_TDD ) {
@ -1819,6 +1820,38 @@ int set_derived_args_nr(all_args_t* args_, rrc_nr_cfg_t* rrc_nr_cfg_, phy_cfg_t*
return SRSRAN_SUCCESS ;
}
// List of selected ARFCNs in band n3, n7 and n20 that match the coreset0 config
using arfcn_list_t = std : : list < uint32_t > ;
std : : map < uint32_t , arfcn_list_t > valid_arfcn = { { 3 , { 363500 , 368500 , 369500 , 374500 , 375000 } } ,
{ 7 , { 525000 , 526200 , 531000 } } ,
{ 20 , { 159000 , 160200 } } } ;
std : : string valid_arfcns_to_string ( uint32_t band )
{
std : : string band_string ;
if ( valid_arfcn . find ( band ) ! = valid_arfcn . end ( ) ) {
for ( const auto & arfcn : valid_arfcn . at ( band ) ) {
band_string + = std : : to_string ( arfcn ) ;
band_string + = " , " ;
}
}
return band_string ;
}
bool is_valid_arfcn ( uint32_t band , uint32_t dl_arfcn )
{
if ( valid_arfcn . find ( band ) = = valid_arfcn . end ( ) ) {
return false ;
}
const auto & arfcn_list = valid_arfcn . at ( band ) ;
for ( const auto & arfcn : arfcn_list ) {
if ( arfcn = = dl_arfcn ) {
return true ;
}
}
return false ;
}
} // namespace enb_conf_sections
namespace sib_sections {