You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
816 B
31 lines
816 B
6 years ago
|
#include "stdafx.h"
|
||
|
#include "MessagePeriodic.h"
|
||
|
#include "J2534Connection.h"
|
||
|
|
||
|
MessagePeriodic::MessagePeriodic(
|
||
|
std::chrono::microseconds delay,
|
||
|
std::shared_ptr<MessageTx> msg
|
||
|
) : Action(msg->connection, delay), msg(msg), runyet(FALSE), active(TRUE) { };
|
||
|
|
||
|
void MessagePeriodic::execute() {
|
||
|
if (!this->active) return;
|
||
|
if (this->runyet) {
|
||
|
if (msg->isFinished()) {
|
||
|
msg->reset();
|
||
|
msg->execute();
|
||
|
}
|
||
|
} else {
|
||
|
this->runyet = TRUE;
|
||
|
msg->execute();
|
||
|
}
|
||
|
|
||
|
if (auto conn_sp = this->connection.lock()) {
|
||
|
if (auto panda_dev_sp = conn_sp->getPandaDev()) {
|
||
|
//Scheduling must be relative to now incase there was a long stall that
|
||
|
//would case it to be super far behind and try to catch up forever.
|
||
|
this->scheduleImmediateDelay();
|
||
|
panda_dev_sp->insertActionIntoTaskList(shared_from_this());
|
||
|
}
|
||
|
}
|
||
|
}
|