From e841a5ef8176a968bb39c8a52501a82f7463fb02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Sch=C3=A4fer?= Date: Mon, 12 Jun 2023 00:08:00 -0700 Subject: [PATCH] Encoderd: refactor msg getters and setters (#28509) * Encoderd: refactor msg getters and setters * whitespace * whitespace * whitespace old-commit-hash: 2453d3a04b38c59447184bde08e76aed66be3439 --- system/loggerd/loggerd.cc | 11 ++--------- system/loggerd/loggerd.h | 10 ++++++++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/system/loggerd/loggerd.cc b/system/loggerd/loggerd.cc index dbda43219..9ad368761 100644 --- a/system/loggerd/loggerd.cc +++ b/system/loggerd/loggerd.cc @@ -64,10 +64,7 @@ int handle_encoder_msg(LoggerdState *s, Message *msg, std::string &name, struct // extract the message capnp::FlatArrayMessageReader cmsg(kj::ArrayPtr((capnp::word *)msg->getData(), msg->getSize() / sizeof(capnp::word))); auto event = cmsg.getRoot(); - // TODO this should be dealt with generically - auto edata = (name == "driverEncodeData") ? event.getDriverEncodeData() : - ((name == "wideRoadEncodeData") ? event.getWideRoadEncodeData() : - ((name == "qRoadEncodeData") ? event.getQRoadEncodeData() : event.getRoadEncodeData())); + auto edata = (event.*(encoder_info.get_encode_data_func))(); auto idx = edata.getIdx(); auto flags = idx.getFlags(); @@ -140,11 +137,7 @@ int handle_encoder_msg(LoggerdState *s, Message *msg, std::string &name, struct MessageBuilder bmsg; auto evt = bmsg.initEvent(event.getValid()); evt.setLogMonoTime(event.getLogMonoTime()); - // TODO this should be dealt with generically - if (name == "driverEncodeData") { evt.setDriverEncodeIdx(idx); } - if (name == "wideRoadEncodeData") { evt.setWideRoadEncodeIdx(idx); } - if (name == "qRoadEncodeData") { evt.setQRoadEncodeIdx(idx); } - if (name == "roadEncodeData") { evt.setRoadEncodeIdx(idx); } + (evt.*(encoder_info.set_encode_idx_func))(idx); auto new_msg = bmsg.toBytes(); logger_log(&s->logger, (uint8_t *)new_msg.begin(), new_msg.size(), true); // always in qlog? bytes_count += new_msg.size(); diff --git a/system/loggerd/loggerd.h b/system/loggerd/loggerd.h index 1333b7231..579b079db 100644 --- a/system/loggerd/loggerd.h +++ b/system/loggerd/loggerd.h @@ -51,6 +51,8 @@ public: int fps = MAIN_FPS; int bitrate = MAIN_BITRATE; cereal::EncodeIndex::Type encode_type = cereal::EncodeIndex::Type::FULL_H_E_V_C; + ::cereal::EncodeData::Reader (cereal::Event::Reader::*get_encode_data_func)() const; + void (cereal::Event::Builder::*set_encode_idx_func)(::cereal::EncodeIndex::Reader); }; class LogCameraInfo { @@ -65,15 +67,21 @@ public: const EncoderInfo main_road_encoder_info = { .publish_name = "roadEncodeData", .filename = "fcamera.hevc", + .get_encode_data_func = &cereal::Event::Reader::getRoadEncodeData, + .set_encode_idx_func = &cereal::Event::Builder::setRoadEncodeIdx, }; const EncoderInfo main_wide_road_encoder_info = { .publish_name = "wideRoadEncodeData", .filename = "ecamera.hevc", + .get_encode_data_func = &cereal::Event::Reader::getWideRoadEncodeData, + .set_encode_idx_func = &cereal::Event::Builder::setWideRoadEncodeIdx, }; const EncoderInfo main_driver_encoder_info = { .publish_name = "driverEncodeData", .filename = "dcamera.hevc", .record = Params().getBool("RecordFront"), + .get_encode_data_func = &cereal::Event::Reader::getDriverEncodeData, + .set_encode_idx_func = &cereal::Event::Builder::setDriverEncodeIdx, }; const EncoderInfo qcam_encoder_info = { @@ -83,6 +91,8 @@ const EncoderInfo qcam_encoder_info = { .encode_type = cereal::EncodeIndex::Type::QCAMERA_H264, .frame_width = 526, .frame_height = 330, + .get_encode_data_func = &cereal::Event::Reader::getQRoadEncodeData, + .set_encode_idx_func = &cereal::Event::Builder::setQRoadEncodeIdx, };