Skip to content

Commit 5491a6b

Browse files
author
Jarkko Paso
authored
Fixed UFSI update print function (ARMmbed#2470)
1 parent 86f64c5 commit 5491a6b

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

source/6LoWPAN/ws/ws_neighbor_class.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,14 @@ static void ws_neighbor_calculate_ufsi_drift(ws_neighbor_class_entry_t *ws_neigh
106106
if (ws_neighbor->fhss_data.uc_timing_info.unicast_channel_function == WS_TR51CF) {
107107
seq_length = ws_neighbor->fhss_data.uc_timing_info.unicast_number_of_channels;
108108
}
109+
uint32_t ufsi_prev_tmp = ws_neighbor->fhss_data.uc_timing_info.ufsi;
110+
uint32_t ufsi_cur_tmp = ws_utt->ufsi;
111+
if (ufsi_cur_tmp < ufsi_prev_tmp) {
112+
ufsi_cur_tmp += 0xffffff;
113+
}
109114
// Convert 24-bit UFSI to real time before drift calculation
110-
uint32_t time_since_seq_start_prev_ms = own_ceil((float)((uint64_t)ws_neighbor->fhss_data.uc_timing_info.ufsi * seq_length * ws_neighbor->fhss_data.uc_timing_info.unicast_dwell_interval) / 0x1000000);
111-
uint32_t time_since_seq_start_cur_ms = own_ceil((float)((uint64_t)ws_utt->ufsi * seq_length * ws_neighbor->fhss_data.uc_timing_info.unicast_dwell_interval) / 0x1000000);
115+
uint32_t time_since_seq_start_prev_ms = own_ceil((float)((uint64_t)ufsi_prev_tmp * seq_length * ws_neighbor->fhss_data.uc_timing_info.unicast_dwell_interval) / 0x1000000);
116+
uint32_t time_since_seq_start_cur_ms = own_ceil((float)((uint64_t)ufsi_cur_tmp * seq_length * ws_neighbor->fhss_data.uc_timing_info.unicast_dwell_interval) / 0x1000000);
112117
uint32_t time_since_last_ufsi_us = timestamp - ws_neighbor->fhss_data.uc_timing_info.utt_rx_timestamp;
113118
uint32_t ufsi_diff_ms = time_since_seq_start_cur_ms - time_since_seq_start_prev_ms;
114119
int32_t ufsi_drift_ms = (int32_t)(time_since_last_ufsi_us / 1000 - ufsi_diff_ms);

0 commit comments

Comments
 (0)