Skip to content

Commit 2695601

Browse files
author
Juha Heiskanen
committed
FHSS parent synch fix.
Parent broadcast set never stop old shedule which cause that nodes start advertisment Broadast shedule wrongly.
1 parent b50abb0 commit 2695601

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

source/Service_Libs/fhss/fhss_ws.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,10 +664,14 @@ int fhss_ws_set_parent(fhss_structure_t *fhss_structure, const uint8_t eui64[8],
664664
return -1;
665665
}
666666
platform_enter_critical();
667+
fhss_structure->platform_functions.fhss_timer_stop(fhss_broadcast_handler, fhss_structure->fhss_api);
667668
uint32_t time_from_reception_ms = (fhss_structure->callbacks.read_timestamp(fhss_structure->fhss_api) - bc_timing_info->bt_rx_timestamp)/1000;
668669
uint32_t true_bc_interval_offset = (bc_timing_info->broadcast_interval_offset + time_from_reception_ms) % bc_timing_info->broadcast_interval;
669670
uint32_t timeout = ((bc_timing_info->broadcast_interval-true_bc_interval_offset)*1000);
670-
fhss_structure->ws->is_on_bc_channel = false;
671+
672+
if (fhss_structure->ws->is_on_bc_channel) {
673+
timeout -= ((bc_timing_info->broadcast_interval - bc_timing_info->broadcast_dwell_interval) *1000);
674+
}
671675
fhss_start_timer(fhss_structure, timeout, fhss_broadcast_handler);
672676
uint16_t slots_since_reception = (bc_timing_info->broadcast_interval_offset + time_from_reception_ms) / bc_timing_info->broadcast_interval;
673677
// TODO: Calculate drift error

0 commit comments

Comments
 (0)