@@ -91,6 +91,7 @@ fhss_structure_t *fhss_ws_enable(fhss_api_t *fhss_api, const fhss_ws_configurati
9191 fhss_struct -> number_of_channels = channel_count ;
9292 fhss_struct -> own_hop = 0xff ;
9393 fhss_struct -> rx_channel = fhss_configuration -> unicast_fixed_channel ;
94+ fhss_struct -> ws -> min_synch_interval = DEFAULT_MIN_SYNCH_INTERVAL ;
9495 fhss_set_txrx_slot_length (fhss_struct );
9596 ns_list_init (& fhss_struct -> fhss_failed_tx_list );
9697 return fhss_struct ;
@@ -657,7 +658,7 @@ int fhss_ws_set_callbacks(fhss_structure_t *fhss_structure)
657658 return 0 ;
658659}
659660
660- int fhss_ws_set_parent (fhss_structure_t * fhss_structure , const uint8_t eui64 [8 ], const broadcast_timing_info_t * bc_timing_info )
661+ int fhss_ws_set_parent (fhss_structure_t * fhss_structure , const uint8_t eui64 [8 ], const broadcast_timing_info_t * bc_timing_info , const bool force_synch )
661662{
662663 (void ) eui64 ;
663664 if (!fhss_structure -> ws ) {
@@ -666,6 +667,10 @@ int fhss_ws_set_parent(fhss_structure_t *fhss_structure, const uint8_t eui64[8],
666667 if (!bc_timing_info -> broadcast_interval || !bc_timing_info -> broadcast_dwell_interval ) {
667668 return -1 ;
668669 }
670+ if ((((uint32_t )fhss_structure -> ws -> min_synch_interval * 1000000 ) > (fhss_structure -> callbacks .read_timestamp (fhss_structure -> fhss_api ) - fhss_structure -> ws -> synchronization_time )) && !force_synch ) {
671+ return 0 ;
672+ }
673+ fhss_structure -> ws -> synchronization_time = fhss_structure -> callbacks .read_timestamp (fhss_structure -> fhss_api );
669674 platform_enter_critical ();
670675 fhss_stop_timer (fhss_structure , fhss_broadcast_handler );
671676 uint32_t time_from_reception_ms = (fhss_structure -> callbacks .read_timestamp (fhss_structure -> fhss_api ) - bc_timing_info -> bt_rx_timestamp )/1000 ;
0 commit comments