fix trigger wave bug.
This commit is contained in:
parent
f420b5945a
commit
0b256f350a
@ -412,6 +412,40 @@ long SensorScheduler::CalcNextTimestamp(int id, uint16_t short_addr, bool &z, in
|
|||||||
zlog_debug(zbt, "[Nxt] [%d:%x] next feature send utc time2:%s", id, short_addr, GetUTCTime(max_ts).c_str());
|
zlog_debug(zbt, "[Nxt] [%d:%x] next feature send utc time2:%s", id, short_addr, GetUTCTime(max_ts).c_str());
|
||||||
return max_ts;
|
return max_ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = forward_wave_slice_num+1; i <= forward_wave_slice_num + wave_slice_num_per_eigen_interval_; ++i) {
|
||||||
|
if (slice_sensor_id_[i] == 0) { // idle time
|
||||||
|
send_wave_ts = current_wave_start_ts_ + nth_eigen_value_slice_ * eigen_value_send_interval_ + 60 + (i - forward_wave_slice_num - 1) * 60;
|
||||||
|
if (free_slice_ocuppied_.count(send_wave_ts) != 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
zlog_debug(zbt, "[%d:%x] in idle time for trigger wave", id, short_addr);
|
||||||
|
if (trigger_wave_record_.find(short_addr) != trigger_wave_record_.end()) {
|
||||||
|
auto iter = trigger_wave_record_.find(short_addr);
|
||||||
|
if (iter->second.first != 0) {
|
||||||
|
current_request_ = kScheduleWaveForm;
|
||||||
|
z = true;
|
||||||
|
zlog_debug(zbt, "[%d:%x] trigger z wave time", id, short_addr);
|
||||||
|
iter->second.first = 0;
|
||||||
|
next_task_id = kScheduleWaveForm;
|
||||||
|
free_slice_ocuppied_.insert(send_wave_ts);
|
||||||
|
WriteTriggerWaveRecord();
|
||||||
|
return send_wave_ts;
|
||||||
|
} else if (iter->second.second != 0) {
|
||||||
|
current_request_ = kScheduleWaveForm;
|
||||||
|
z = false;
|
||||||
|
iter->second.second = 0;
|
||||||
|
WriteTriggerWaveRecord();
|
||||||
|
next_task_id = kScheduleWaveForm;
|
||||||
|
zlog_debug(zbt, "[%d:%x] trigger xy wave time", id, short_addr);
|
||||||
|
free_slice_ocuppied_.insert(send_wave_ts);
|
||||||
|
return send_wave_ts;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (current_schedule_status_ == kScheduleStatusDebug) {
|
if (current_schedule_status_ == kScheduleStatusDebug) {
|
||||||
if (debug_list_.count(short_addr) == 0) {
|
if (debug_list_.count(short_addr) == 0) {
|
||||||
@ -472,7 +506,7 @@ int SensorScheduler::GetNextDuration(uint16_t short_addr, bool &z, int &next_tas
|
|||||||
id = iter->second;
|
id = iter->second;
|
||||||
}
|
}
|
||||||
current_ts_ = GetLocalTs();
|
current_ts_ = GetLocalTs();
|
||||||
// CleanIdleOccupiedSet(current_ts_);
|
CleanIdleOccupiedSet(current_ts_);
|
||||||
|
|
||||||
nth_wave_start_slice_ = (current_ts_ - start_timestamp_) / wave_form_send_interval_;
|
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_;
|
current_wave_start_ts_ = nth_wave_start_slice_ * wave_form_send_interval_ + start_timestamp_;
|
||||||
@ -481,9 +515,17 @@ int SensorScheduler::GetNextDuration(uint16_t short_addr, bool &z, int &next_tas
|
|||||||
seconds_in_current_eigen_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;
|
ts_in_eigen_slice_ = false;
|
||||||
|
|
||||||
if (seconds_in_current_eigen_slice_ < 60 - 3) {
|
if (seconds_in_current_eigen_slice_ < 57) {
|
||||||
ts_in_eigen_slice_ = true;
|
ts_in_eigen_slice_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ts_in_eigen_slice_) {
|
||||||
|
// nth_eigen_slice_ = (seconds_in_current_eigen_slice_ + 2) / eigen_value_send_duration_;
|
||||||
|
if (nth_eigen_value_slice_ == 0) {
|
||||||
|
ClearFailureSuccessMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
zlog_debug(zbt, "[%d:%x] ts:%ld, current utc:%s, nth eigen_value slice:%d, seconds in eigen slice:%d, eigen slice:%d",
|
zlog_debug(zbt, "[%d:%x] ts:%ld, current utc:%s, nth eigen_value slice:%d, seconds in eigen slice:%d, eigen slice:%d",
|
||||||
id, short_addr, current_ts_, GetUTCTime(current_ts_).c_str(), nth_eigen_value_slice_+1, seconds_in_current_eigen_slice_, ts_in_eigen_slice_);
|
id, short_addr, current_ts_, GetUTCTime(current_ts_).c_str(), nth_eigen_value_slice_+1, seconds_in_current_eigen_slice_, ts_in_eigen_slice_);
|
||||||
// long current_ts = GetLocalTs();
|
// long current_ts = GetLocalTs();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user