Skip to content

Commit 98be8b2

Browse files
author
Jarkko Paso
authored
Merge pull request ARMmbed#1868 from ARMmbed/IOTTHD-2863
Iotthd 2863
2 parents 23296c1 + 2188fd2 commit 98be8b2

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

source/6LoWPAN/ws/ws_bootstrap.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,6 +1471,7 @@ static void ws_set_fhss_hop(protocol_interface_info_entry_t *cur)
14711471
// Calculate own hop count. This method gets inaccurate when hop count increases.
14721472
uint8_t own_hop = (own_rank - rank_inc) / rank_inc;
14731473
ns_fhss_ws_set_hop_count(cur->ws_info->fhss_api, own_hop);
1474+
tr_debug("own hop: %u, own rank: %u, rank inc: %u", own_hop, own_rank, rank_inc);
14741475
}
14751476

14761477
static void ws_address_registration_update(protocol_interface_info_entry_t *interface)

source/Service_Libs/fhss/fhss_ws.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,9 @@ static uint32_t fhss_ws_calculate_ufsi(fhss_structure_t *fhss_structure, uint32_
241241
}
242242
cur_slot--;
243243
uint32_t remaining_time = (fhss_structure->platform_functions.fhss_get_remaining_slots(fhss_unicast_handler, fhss_structure->fhss_api) / 1000);
244+
if (remaining_time > dwell_time) {
245+
remaining_time = 0;
246+
}
244247
uint32_t time_to_tx = 0;
245248
uint32_t cur_time = fhss_structure->callbacks.read_timestamp(fhss_structure->fhss_api);
246249
if (cur_time < tx_time) {
@@ -689,6 +692,9 @@ int fhss_ws_set_parent(fhss_structure_t *fhss_structure, const uint8_t eui64[8],
689692
fhss_stop_timer(fhss_structure, fhss_broadcast_handler);
690693
uint32_t time_from_reception_ms = divide_integer(fhss_structure->callbacks.read_timestamp(fhss_structure->fhss_api) - bc_timing_info->bt_rx_timestamp, 1000);
691694
uint32_t true_bc_interval_offset = (bc_timing_info->broadcast_interval_offset + time_from_reception_ms) % bc_timing_info->broadcast_interval;
695+
if (true_bc_interval_offset >= bc_timing_info->broadcast_dwell_interval) {
696+
fhss_structure->ws->is_on_bc_channel = false;
697+
}
692698
uint32_t timeout = ((bc_timing_info->broadcast_interval-true_bc_interval_offset)*1000);
693699

694700
if (fhss_structure->ws->is_on_bc_channel) {
@@ -726,6 +732,7 @@ int fhss_ws_configuration_set(fhss_structure_t *fhss_structure, const fhss_ws_co
726732
if (channel_count <= 0) {
727733
return -1;
728734
}
735+
platform_enter_critical();
729736
if (fhss_configuration->ws_uc_channel_function == WS_FIXED_CHANNEL || fhss_configuration->fhss_uc_dwell_interval == 0) {
730737
fhss_stop_timer(fhss_structure, fhss_unicast_handler);
731738
fhss_structure->ws->unicast_timer_running = false;
@@ -739,6 +746,7 @@ int fhss_ws_configuration_set(fhss_structure_t *fhss_structure, const fhss_ws_co
739746
if (fhss_configuration->ws_uc_channel_function == WS_FIXED_CHANNEL) {
740747
fhss_structure->rx_channel = fhss_configuration->unicast_fixed_channel;
741748
}
749+
platform_exit_critical();
742750
tr_info("fhss Configuration set, UC channel: %d, BC channel: %d, UC CF: %d, BC CF: %d, channels: %d, uc dwell: %d, bc dwell: %d, bc interval: %d, bsi:%d",
743751
fhss_structure->ws->fhss_configuration.unicast_fixed_channel,
744752
fhss_structure->ws->fhss_configuration.broadcast_fixed_channel,

0 commit comments

Comments
 (0)