@@ -68,6 +68,7 @@ static int8_t mac_mlme_rf_channel_set(struct protocol_interface_rf_mac_setup *rf
6868static void mac_mlme_timer_cb (int8_t timer_id , uint16_t slots );
6969static void mac_mlme_start_confirm_handler (protocol_interface_rf_mac_setup_s * rf_ptr , const mlme_start_conf_t * conf );
7070static void mac_mlme_scan_confirm_handler (protocol_interface_rf_mac_setup_s * rf_ptr , const mlme_scan_conf_t * conf );
71+ static int mac_mlme_set_symbol_rate (protocol_interface_rf_mac_setup_s * rf_mac_setup );
7172
7273static void mac_mlme_energy_scan_start (protocol_interface_rf_mac_setup_s * rf_mac_setup , uint8_t channel )
7374{
@@ -750,6 +751,7 @@ int8_t mac_mlme_set_req(protocol_interface_rf_mac_setup_s *rf_mac_setup, const m
750751 return 0 ;
751752 case macRfConfiguration :
752753 rf_mac_setup -> dev_driver -> phy_driver -> extension (PHY_EXTENSION_SET_RF_CONFIGURATION , (uint8_t * ) set_req -> value_pointer );
754+ mac_mlme_set_symbol_rate (rf_mac_setup );
753755 return 0 ;
754756 default :
755757 return mac_mlme_handle_set_values (rf_mac_setup , set_req );
@@ -1037,6 +1039,17 @@ static uint8_t mac_backoff_ticks_calc(phy_device_driver_s *phy_driver)
10371039 return (uint8_t ) ticks ;
10381040}
10391041
1042+ static int mac_mlme_set_symbol_rate (protocol_interface_rf_mac_setup_s * rf_mac_setup )
1043+ {
1044+ if (rf_mac_setup -> rf_csma_extension_supported ) {
1045+ rf_mac_setup -> dev_driver -> phy_driver -> extension (PHY_EXTENSION_GET_SYMBOLS_PER_SECOND , (uint8_t * ) & rf_mac_setup -> symbol_rate );
1046+ rf_mac_setup -> symbol_time_us = 1000000 / rf_mac_setup -> symbol_rate ;
1047+ tr_debug ("SW-MAC driver support rf extension %" PRIu32 " symbol/seconds %" PRIu32 " us symbol time length" , rf_mac_setup -> symbol_rate , rf_mac_setup -> symbol_time_us );
1048+ return 0 ;
1049+ }
1050+ return -1 ;
1051+ }
1052+
10401053protocol_interface_rf_mac_setup_s * mac_mlme_data_base_allocate (uint8_t * mac64 , arm_device_driver_list_s * dev_driver , mac_description_storage_size_t * storage_sizes )
10411054{
10421055 uint16_t total_length = 0 ;
@@ -1127,11 +1140,7 @@ protocol_interface_rf_mac_setup_s *mac_mlme_data_base_allocate(uint8_t *mac64, a
11271140 bool rf_support = false;
11281141 dev_driver -> phy_driver -> extension (PHY_EXTENSION_DYNAMIC_RF_SUPPORTED , (uint8_t * )& rf_support );
11291142 entry -> rf_csma_extension_supported = rf_support ;
1130- if (entry -> rf_csma_extension_supported ) {
1131- entry -> dev_driver -> phy_driver -> extension (PHY_EXTENSION_GET_SYMBOLS_PER_SECOND , (uint8_t * ) & entry -> symbol_rate );
1132- entry -> symbol_time_us = 1000000 / entry -> symbol_rate ;
1133- tr_debug ("SW-MAC driver support rf extension %" PRIu32 " symbol/seconds %" PRIu32 " us symbol time length" , entry -> symbol_rate , entry -> symbol_time_us );
1134- }
1143+ mac_mlme_set_symbol_rate (entry );
11351144
11361145 //How many 10us ticks backoff period is for waiting 20symbols which is typically 10 bytes time
11371146 entry -> backoff_period_in_10us = mac_backoff_ticks_calc (dev_driver -> phy_driver );
0 commit comments