// Generated by skylab2.py #pragma once #include "skylab2_types.h" namespace umnsvp::skylab2 { typedef union { uint8_t b[4]; uint32_t i; float f; } can_float_union_t; ///@brief enumeration for CAN packet IDs enum class CANPacketId : uint32_t { {% for p in packets %} /// {{p.description}} {# '%#x' is a python format string.#} CAN_PACKET_{{ p.name | upper }} = {{ '%#x' % p.id}}, {% endfor %} }; {% for p in packets %} ///@brief {{p.description}} struct can_packet_{{ p.name | lower }} { {% for field in p.data %} {% if field.__class__.__name__ == "CANMessageBitfieldDef" %} struct { {% for subfield in field.bits %} uint8_t {{subfield.name}}:1; {% endfor %} } {{ field.name | lower }}; {% else %}{{ field.data_type }} {{field.name}};{% endif %} {% endfor %} }; /// the length of the {{p.name | lower}} packet constexpr size_t CAN_LENGTH_{{ p.name | upper }} = sizeof(can_packet_{{p.name | lower}}); {% endfor %} } // namespace umnsvp::skylab2