#pragma once #include #include #include #include #include "CanMessage.h" #include "{{ device_name }}MsgDefs.h" #include "{{ device_name }}MsgDefs.pb.h" {%- 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() %} // {{ msg['msg_id'] }} ({{ msg['msg_id_hex_string'] }}) // payload: {{ msg_cpp.field_list(msg_id_value) | join(", ") }} // serializeProto: msg struct -> QByteArray of serialized protobuf data (header populated from params) // deserializeProto: QByteArray of serialized protobuf data -> msg struct (false on parse failure) QByteArray serializeProto(const {{ msg['msg_name'] }}Payload &src, const QDateTime ×tamp, const QString &deviceSerialNum, quint16 msgId, qint16 sequence); bool deserializeProto(const QByteArray &bytes, {{ msg['msg_name'] }}Payload &dst); {%- endfor %} QByteArray canMessageToProtobufByteArray(const QDateTime ×tamp, const QString &deviceSerialNumber, const Can::Message &msg); // Maps a msgId to its fully-qualified protobuf message name (e.g. "{{ cpp_namespace if cpp_namespace else 'messages' }}.messages.AlarmStatusData"). // Returns an empty string if the msgId is unknown. Intended for descriptor-pool lookup // (DescriptorPool::FindMessageTypeByName) to decode/inspect a message generically. const std::string &msgIdToProtoName(quint16 msgId); {%- if cpp_namespace is defined and cpp_namespace is not none %} } // namespace {{ cpp_namespace }} {%- endif %}