avoid polling if message is up-to-date within interval
This commit is contained in:
@@ -482,6 +482,8 @@ result_t BusHandler::handleSymbol() {
|
|||||||
Message* message = m_messages->getNextPoll();
|
Message* message = m_messages->getNextPoll();
|
||||||
if (message != nullptr) {
|
if (message != nullptr) {
|
||||||
m_lastPoll = now;
|
m_lastPoll = now;
|
||||||
|
if (difftime(now, message->getLastUpdateTime()) > m_pollInterval) {
|
||||||
|
// only poll this message if it was not updated already by other means within the interval
|
||||||
auto request = new PollRequest(message);
|
auto request = new PollRequest(message);
|
||||||
result_t ret = request->prepare(m_ownMasterAddress);
|
result_t ret = request->prepare(m_ownMasterAddress);
|
||||||
if (ret != RESULT_OK) {
|
if (ret != RESULT_OK) {
|
||||||
@@ -494,6 +496,7 @@ result_t BusHandler::handleSymbol() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (startRequest != nullptr) { // initiate arbitration
|
if (startRequest != nullptr) { // initiate arbitration
|
||||||
logDebug(lf_bus, "start request %2.2x", startRequest->m_master[0]);
|
logDebug(lf_bus, "start request %2.2x", startRequest->m_master[0]);
|
||||||
result_t ret = m_device->startArbitration(startRequest->m_master[0]);
|
result_t ret = m_device->startArbitration(startRequest->m_master[0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user