1
0
Fork 0

set/timeout ops modify the operational state

This commit is contained in:
Kevin Matz 2022-11-21 13:41:22 -05:00
parent 53ac273c0b
commit a5958448ff
1 changed files with 15 additions and 1 deletions

View File

@ -131,6 +131,7 @@ void Universe::setData(const std::vector<uint8_t>& data)
rx_timeout_(true);
// notify callbacks
status_ = Status::DMX_ACTIVE;
doDataCallbacks();
}
@ -194,6 +195,9 @@ void Universe::setValue(const uint16_t address, const uint8_t value)
null_start_mutex.lock();
null_start_data[address] = value;
null_start_mutex.unlock();
status_ = Status::DMX_ACTIVE;
doDataCallbacks();
}
@ -214,6 +218,9 @@ void Universe::setValue(const uint16_t start, const uint16_t footprint,
null_start_mutex.lock();
std::copy(data, data + footprint, null_start_data.begin() + start);
null_start_mutex.unlock();
status_ = Status::DMX_ACTIVE;
doDataCallbacks();
}
@ -267,9 +274,16 @@ void Universe::rx_timeout_(bool add_now)
if (add_now)
rx_times_.push(now);
while (rx_times_.size() > 0 &&
while (!rx_times_.empty() &&
elapsed(now, rx_times_.front()).count() > rx_timeout_period_)
{
rx_times_.pop();
if (rx_times_.empty())
{
status_ = Status::DMX_LOST;
doDataCallbacks();
}
}
}
} // namespace DMX