From ccc7f95f4d449a64ec7cbe7b13933a82c8e2e3b2 Mon Sep 17 00:00:00 2001 From: deanlee Date: Thu, 6 Jun 2024 21:51:45 +0800 Subject: [PATCH] less changes --- can/parser.cc | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/can/parser.cc b/can/parser.cc index 37ccd9855d..d83a8f089e 100644 --- a/can/parser.cc +++ b/can/parser.cc @@ -176,26 +176,16 @@ CANParser::CANParser(int abus, const std::string& dbc_name, bool ignore_checksum } #ifndef DYNAMIC_CAPNP - -// If the input data is already aligned to capnp::word boundaries, -// a direct ArrayPtr is returned. Otherwise, a new ArrayPtr is created -// with the data copied into it, ensuring alignment. -kj::ArrayPtr CANParser::getAlignedData(const std::string &data) { - bool aligned = reinterpret_cast(data.data()) % sizeof(capnp::word) == 0; - if (aligned) { - return kj::ArrayPtr((capnp::word*)(data.data()), data.size() / sizeof(capnp::word)); - } - +void CANParser::update_string(const std::string &data, bool sendcan) { + // format for board, make copy due to alignment issues. const size_t buf_size = (data.length() / sizeof(capnp::word)) + 1; if (aligned_buf.size() < buf_size) { aligned_buf = kj::heapArray(buf_size); } memcpy(aligned_buf.begin(), data.data(), data.length()); - return aligned_buf.slice(0, buf_size); -} -void CANParser::update_string(const std::string &data, bool sendcan) { - capnp::FlatArrayMessageReader cmsg(getAlignedData(data)); + // extract the messages + capnp::FlatArrayMessageReader cmsg(aligned_buf.slice(0, buf_size)); cereal::Event::Reader event = cmsg.getRoot(); if (first_nanos == 0) {