Index: scripts/MsgUtils/msgutils/templates/MsgDefs_cpp.jinja =================================================================== diff -u -rfd9c43b00259567ff49a3d9b31b98df75b47bc52 -rccc40a7e73e9ee5d2a5fb56f3f2bea4f8294900f --- scripts/MsgUtils/msgutils/templates/MsgDefs_cpp.jinja (.../MsgDefs_cpp.jinja) (revision fd9c43b00259567ff49a3d9b31b98df75b47bc52) +++ scripts/MsgUtils/msgutils/templates/MsgDefs_cpp.jinja (.../MsgDefs_cpp.jinja) (revision ccc40a7e73e9ee5d2a5fb56f3f2bea4f8294900f) @@ -1,29 +1,24 @@ {%- if msg_defs_header | length -%} -#include #include "{{ msg_defs_header }}" {%- endif %} + +#include {%- if cpp_namespace is defined and cpp_namespace is not none %} namespace {{ cpp_namespace }} { {%- endif %} -{%- for (msg_id_value, msg) in msg_cpp.data.items() %} -{%- if proto is defined %} -// {{ msg['msg_id'] }} ({{ msg['msg_id_hex_string'] }}) -// payload: {{ msg_cpp.field_list(msg_id_value) | join(", ") }} -void {{ msg['msg_name'] }}Payload::fromProtobuf([[maybe_unused]] const messages::{{ msg['msg_name'] }} &src) +QString msgIdString(const MsgId msgId) { -{%- for field in msg['payload'] %} -{%- if field['type'] != "union" %} - // {{ field['type'] ~ "-" ~ field['name'] }} - {{ field['name'] }}.value = src.{{ field['name'].lower() }}(); -{%- else %} - // TODO: {{ field['type'] ~ "-" ~ field['name'] }} -{%- endif %} -{%- endfor %} + switch (msgId) { +{%- for (msg_id_value, msg) in msg_cpp.data.items() %} + case {{ msg['msg_id'] }}: return QStringLiteral("{{ msg['msg_id'] }}"); +{%- endfor %} + default: return QStringLiteral("0x%1").arg(static_cast(msgId), 4, 16, QChar('0')); + } } -{%- endif %} +{%- for (msg_id_value, msg) in msg_cpp.data.items() %} // {{ msg['msg_id'] }} ({{ msg['msg_id_hex_string'] }}) // payload: {{ msg_cpp.field_list(msg_id_value) | join(", ") }} @@ -56,27 +51,9 @@ return true; {%- endif %} } -{%- if proto is defined %} // {{ msg['msg_id'] }} ({{ msg['msg_id_hex_string'] }}) // payload: {{ msg_cpp.field_list(msg_id_value) | join(", ") }} -messages::{{ msg['msg_name'] }} {{ msg['msg_name'] }}Payload::toProtobuf() const -{ - messages::{{ msg['msg_name'] }} protoMsg; -{%- for field in msg['payload'] %} -{%- if field['type'] != "union" %} - // {{ field['type'] ~ "-" ~ field['name'] }} - protoMsg.set_{{ field['name'].lower() }}({{ field['name'] }}.value); -{%- else %} - // TODO: {{ field['type'] ~ "-" ~ field['name'] }} -{%- endif %} -{%- endfor %} - return protoMsg; -} -{%- endif %} - -// {{ msg['msg_id'] }} ({{ msg['msg_id_hex_string'] }}) -// payload: {{ msg_cpp.field_list(msg_id_value) | join(", ") }} void {{ msg['msg_name'] }}Payload::toQByteArray([[maybe_unused]] QByteArray &dst) const { {%- if msg['payload'] | length %} @@ -93,54 +70,15 @@ void {{ msg['msg_name'] }}Payload::dump() const { - QStringList params; + QStringList paramList; {%- for field in msg['payload'] %} {%- if field['type'] != "union" %} - params << QString("{{ field['name'] }}=%1").arg({{ field['name'] }}.value); + paramList << QString("{{ field['name'] }}=%1").arg({{ field['name'] }}.value); {%- endif %} {%- endfor %} - qDebug().noquote() << QString("{{ msg['msg_name'] }}Payload: %1").arg(params.count() ? params.join(", ") : ""); + qDebug().noquote() << QString("{{ msg['msg_name'] }}Payload: %1").arg(paramList.count() ? paramList.join(", ") : ""); } {%- endfor %} - -QByteArray canMessageToProtobufByteArray(const QDateTime ×tamp, const QString &deviceSerialNum, const Can::Message &msg) -{ - static const auto updateHeader = [&](messages::Header *header) { - if (header) { - const auto msecs = timestamp.toMSecsSinceEpoch(); - header->set_deviceserialnum(deviceSerialNum.toStdString()); - auto proto_timestamp = header->mutable_timestamp(); - if (proto_timestamp) { - proto_timestamp->set_seconds(msecs / 1000); - proto_timestamp->set_nanos((msecs % 1000) * 1000000); - } - header->set_msgid(msg.msgId); - header->set_sequence(msg.sequence); - } - }; - - switch (msg.msgId) { -{%- for (msg_id_value, msg) in msg_cpp.data.items() %} - case {{ msg['msg_id'] }}: { - {{ msg['msg_name'] }}Payload payload; - if (payload.fromQByteArray(msg.data) == false) { - qDebug().noquote() << "ERROR: could not convert CAN message with MsgId={{ msg['msg_name'] }} to struct"; - } - payload.dump(); - auto proto = payload.toProtobuf(); - updateHeader(proto.mutable_header()); - std::ostringstream out; - (void)proto.SerializeToOstream(&out); - return out.str().c_str(); - break; - } -{%- endfor %} - default: - qDebug().noquote() << QString("WARNING: MsgId=0x%1 not handled").arg(msg.msgId, 4, 16, QChar('0')); - break; - } - return QByteArray(); -} {%- if cpp_namespace is defined and cpp_namespace is not none %} } // namespace {{ cpp_namespace }}