|
|
@ -12,11 +12,14 @@ |
|
|
|
Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *sm_, bool dcam, bool ecam, QObject *parent) |
|
|
|
Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *sm_, bool dcam, bool ecam, QObject *parent) |
|
|
|
: sm(sm_), load_dcam(dcam), load_ecam(ecam), QObject(parent) { |
|
|
|
: sm(sm_), load_dcam(dcam), load_ecam(ecam), QObject(parent) { |
|
|
|
std::vector<const char *> s; |
|
|
|
std::vector<const char *> s; |
|
|
|
|
|
|
|
auto event_struct = capnp::Schema::from<cereal::Event>().asStruct(); |
|
|
|
|
|
|
|
sockets_.resize(event_struct.getUnionFields().size()); |
|
|
|
for (const auto &it : services) { |
|
|
|
for (const auto &it : services) { |
|
|
|
if ((allow.size() == 0 || allow.contains(it.name)) && |
|
|
|
if ((allow.size() == 0 || allow.contains(it.name)) && |
|
|
|
!block.contains(it.name)) { |
|
|
|
!block.contains(it.name)) { |
|
|
|
s.push_back(it.name); |
|
|
|
s.push_back(it.name); |
|
|
|
socks.insert(it.name); |
|
|
|
uint16_t which = event_struct.getFieldByName(it.name).getProto().getDiscriminantValue(); |
|
|
|
|
|
|
|
sockets_[which] = it.name; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
qDebug() << "services " << s; |
|
|
|
qDebug() << "services " << s; |
|
|
@ -208,12 +211,7 @@ void Replay::stream() { |
|
|
|
cur_which = evt->which; |
|
|
|
cur_which = evt->which; |
|
|
|
cur_mono_time_ = evt->mono_time; |
|
|
|
cur_mono_time_ = evt->mono_time; |
|
|
|
|
|
|
|
|
|
|
|
std::string type; |
|
|
|
if (cur_which < sockets_.size() && sockets_[cur_which] != nullptr) { |
|
|
|
KJ_IF_MAYBE(e_, static_cast<capnp::DynamicStruct::Reader>(evt->event).which()) { |
|
|
|
|
|
|
|
type = e_->getProto().getName(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (socks.find(type) != socks.end()) { |
|
|
|
|
|
|
|
int current_ts = (cur_mono_time_ - route_start_ts_) / 1e9; |
|
|
|
int current_ts = (cur_mono_time_ - route_start_ts_) / 1e9; |
|
|
|
if ((current_ts - last_print) > 5.0) { |
|
|
|
if ((current_ts - last_print) > 5.0) { |
|
|
|
last_print = current_ts; |
|
|
|
last_print = current_ts; |
|
|
@ -263,9 +261,9 @@ void Replay::stream() { |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if (sm == nullptr) { |
|
|
|
if (sm == nullptr) { |
|
|
|
auto bytes = evt->bytes(); |
|
|
|
auto bytes = evt->bytes(); |
|
|
|
pm->send(type.c_str(), (capnp::byte *)bytes.begin(), bytes.size()); |
|
|
|
pm->send(sockets_[cur_which], (capnp::byte *)bytes.begin(), bytes.size()); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
sm->update_msgs(nanos_since_boot(), {{type, evt->event}}); |
|
|
|
sm->update_msgs(nanos_since_boot(), {{sockets_[cur_which], evt->event}}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|