mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-21 01:01:41 +00:00
This fixes mostly formatting issues so there is no longer any diff with things after rerunning the generation script. Yes, most of this can be fixed by running wpiformat but that doesn't exist as a pre-commit hook atm, so I think this is nicer. It also removes any reference to the java encode/decode within the python message gen
129 lines
4.7 KiB
Django/Jinja
129 lines
4.7 KiB
Django/Jinja
/*
|
|
* Copyright (C) Photon Vision.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
// THIS FILE WAS AUTO-GENERATED BY ./photon-serde/generate_messages.py. DO NOT MODIFY
|
|
|
|
package org.photonvision.struct;
|
|
|
|
import org.photonvision.common.dataflow.structures.Packet;
|
|
import org.photonvision.common.dataflow.structures.PacketSerde;
|
|
import org.photonvision.utils.PacketUtils;
|
|
|
|
// Assume that the base class lives here and we can import it
|
|
import org.photonvision.targeting.*;
|
|
|
|
// WPILib imports (if any)
|
|
import edu.wpi.first.util.struct.Struct;
|
|
{% for type in nested_wpilib_types -%}
|
|
import {{ get_message_by_name(type).java_import }};
|
|
{%- if not loop.last %},{% endif -%}
|
|
{%- endfor%}
|
|
|
|
/**
|
|
* Auto-generated serialization/deserialization helper for {{name}}
|
|
*/
|
|
public class {{ name }}Serde implements PacketSerde<{{name}}> {
|
|
|
|
@Override
|
|
public final String getInterfaceUUID() { return "{{ message_hash }}"; }
|
|
@Override
|
|
public final String getSchema() { return "{{ message_fmt }}"; }
|
|
@Override
|
|
public final String getTypeName() { return "{{ name }}"; }
|
|
|
|
@Override
|
|
public int getMaxByteSize() {
|
|
// TODO Auto-generated method stub
|
|
throw new UnsupportedOperationException("Unimplemented method 'getMaxByteSize'");
|
|
}
|
|
|
|
@Override
|
|
public void pack(Packet packet, {{ name }} value) {
|
|
{%- for field in fields -%}
|
|
{%- if field.type | is_shimmed %}
|
|
{{ get_message_by_name(field.type).java_encode_shim }}(packet, value.{{ field.name }});
|
|
{%- elif field.optional == True %}
|
|
// {{ field.name }} is optional! it better not be a VLA too
|
|
packet.encodeOptional(value.{{ field.name }});
|
|
{%- elif field.vla == True and field.type | is_intrinsic %}
|
|
// {{ field.name }} is a intrinsic VLA!
|
|
packet.encode(value.{{ field.name }});
|
|
{%- elif field.vla == True %}
|
|
// {{ field.name }} is a custom VLA!
|
|
packet.encodeList(value.{{ field.name }});
|
|
{%- elif field.type | is_intrinsic %}
|
|
// field {{ field.name }} is of intrinsic type {{ field.type }}
|
|
packet.encode(({{ type_map[field.type].java_type }}) value.{{ field.name }});
|
|
{%- else %}
|
|
// field {{ field.name }} is of non-intrinsic type {{ field.type }}
|
|
{{ field.type }}.photonStruct.pack(packet, value.{{ field.name }});
|
|
{%- endif %}
|
|
{%- if not loop.last %}
|
|
{% endif -%}
|
|
{% endfor%}
|
|
}
|
|
|
|
@Override
|
|
public {{ name }} unpack(Packet packet) {
|
|
var ret = new {{ name }}();
|
|
{% for field in fields -%}
|
|
{%- if field.type | is_shimmed %}
|
|
ret.{{ field.name }} = {{ get_message_by_name(field.type).java_decode_shim }}(packet);
|
|
{%- elif field.optional == True %}
|
|
// {{ field.name }} is optional! it better not be a VLA too
|
|
ret.{{ field.name }} = packet.decodeOptional({{ field.type }}.photonStruct);
|
|
{%- elif field.vla == True and not field.type | is_intrinsic %}
|
|
// {{ field.name }} is a custom VLA!
|
|
ret.{{ field.name }} = packet.decodeList({{ field.type }}.photonStruct);
|
|
{%- elif field.vla == True and field.type | is_intrinsic %}
|
|
// {{ field.name }} is a custom VLA!
|
|
ret.{{ field.name }} = packet.decode{{ type_map[field.type].java_type.title() }}List();
|
|
{%- elif field.type | is_intrinsic %}
|
|
// {{ field.name }} is of intrinsic type {{ field.type }}
|
|
ret.{{field.name}} = packet.{{ type_map[field.type].java_decode_method }}();
|
|
{%- else %}
|
|
// {{ field.name }} is of non-intrinsic type {{ field.type }}
|
|
ret.{{field.name}} = {{ field.type }}.photonStruct.unpack(packet);
|
|
{%- endif %}
|
|
{%- if not loop.last %}
|
|
{% endif -%}
|
|
{% endfor%}
|
|
|
|
return ret;
|
|
}
|
|
|
|
@Override
|
|
public PacketSerde<?>[] getNestedPhotonMessages() {
|
|
return new PacketSerde<?>[] {
|
|
{% for type in nested_photon_types -%}
|
|
{{ type }}.photonStruct
|
|
{%- if not loop.last %},{% endif -%}
|
|
{%- endfor%}
|
|
};
|
|
}
|
|
|
|
@Override
|
|
public Struct<?>[] getNestedWpilibMessages() {
|
|
return new Struct<?>[] {
|
|
{% for type in nested_wpilib_types -%}
|
|
{{ type }}.struct
|
|
{%- if not loop.last %},{% endif -%}
|
|
{%- endfor%}
|
|
};
|
|
}
|
|
}{{'\n'}}
|