diff --git a/scheduler/schedule.cpp b/scheduler/schedule.cpp index ae149fd..4ebd6b1 100644 --- a/scheduler/schedule.cpp +++ b/scheduler/schedule.cpp @@ -166,6 +166,16 @@ long SensorScheduler::CalcNextTimestamp(int id, uint16_t short_addr, int& next_t // if (seconds_in_current_eigen_slice_ < eigen_value_slice_total_seconds_ - 3) { // ts_in_eigen_slice_ = true; // } + nth_wave_start_slice_ = (current_ts_ - start_timestamp_) / wave_form_send_interval_; + current_wave_start_ts_ = nth_wave_start_slice_ * wave_form_send_interval_ + start_timestamp_; + seconds_in_current_wave_slice_ = current_ts_ - current_wave_start_ts_; + nth_eigen_value_slice_ = seconds_in_current_wave_slice_ / eigen_value_send_interval_; + seconds_in_current_eigen_slice_ = seconds_in_current_wave_slice_ % eigen_value_send_interval_; + ts_in_eigen_slice_ = false; + + if (seconds_in_current_eigen_slice_ < eigen_value_slice_total_seconds_ - 3) { + ts_in_eigen_slice_ = true; + } if (ts_in_eigen_slice_) { int forward_wave_slice_num = nth_eigen_value_slice_ * wave_slice_num_per_eigen_interval_; @@ -292,13 +302,13 @@ int SensorScheduler::GetNextDuration(int short_addr, int &next_task_id) { } else { id = iter->second; } - long current_ts = GetLocalTs(); - nth_wave_start_slice_ = (current_ts_ - start_timestamp_) / wave_form_send_interval_; - current_wave_start_ts_ = nth_wave_start_slice_ * wave_form_send_interval_ + start_timestamp_; - seconds_in_current_wave_slice_ = current_ts_ - current_wave_start_ts_; - nth_eigen_value_slice_ = seconds_in_current_wave_slice_ / eigen_value_send_interval_; + long current_ts_ = GetLocalTs(); + // nth_wave_start_slice_ = (current_ts_ - start_timestamp_) / wave_form_send_interval_; + // current_wave_start_ts_ = nth_wave_start_slice_ * wave_form_send_interval_ + start_timestamp_; + // seconds_in_current_wave_slice_ = current_ts_ - current_wave_start_ts_; + // nth_eigen_value_slice_ = seconds_in_current_wave_slice_ / eigen_value_send_interval_; long next_ts = CalcNextTimestamp(id, short_addr, next_task_id); - int duration = next_ts - current_ts; + int duration = next_ts - current_ts_; if (duration < 0 || duration > eigen_value_send_interval_) { zlog_warn(zct, "[Nxt] exception duration: %d", duration); duration = eigen_value_send_interval_;