Skip to content

Commit e18055a

Browse files
author
Jarkko Paso
committed
MAC: Update symbol rate when RF configuration changed
1 parent 9eada28 commit e18055a

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

source/MAC/IEEE802_15_4/mac_mlme.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ static int8_t mac_mlme_rf_channel_set(struct protocol_interface_rf_mac_setup *rf
6868
static void mac_mlme_timer_cb(int8_t timer_id, uint16_t slots);
6969
static void mac_mlme_start_confirm_handler(protocol_interface_rf_mac_setup_s *rf_ptr, const mlme_start_conf_t *conf);
7070
static 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

7273
static 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+
10401053
protocol_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

Comments
 (0)