Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
+ *
Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
******************************************************************************/
-package us.dot.its.jpo.ode.util;
-import org.json.JSONObject;
-import org.json.XML;
+package us.dot.its.jpo.ode.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -24,147 +22,235 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper.Builder;
+import org.json.JSONObject;
+import org.json.XML;
+/**
+ * Utility class for XML manipulation.
+ */
public class XmlUtils {
- public static class XmlUtilsException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- public XmlUtilsException(String string) {
- super(string);
- }
-
- public XmlUtilsException(String string, Exception e) {
- super(string, e);
- }
-
- }
-
- private XmlMapper xmlMapper = new XmlMapper();
- private static XmlMapper staticXmlMapper = new XmlMapper();
-
- static {
- var builder = new Builder(staticXmlMapper);
- builder.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- builder.defaultUseWrapper(true);
- staticXmlMapper = builder.build();
- }
-
- public XmlUtils() {
- super();
- var builder = new Builder(xmlMapper);
- builder.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- builder.defaultUseWrapper(true);
- xmlMapper = builder.build();
- }
-
- public String toXml(Object o) throws JsonProcessingException {
- String xml = xmlMapper.writeValueAsString(o);
- return xml;
- }
-
- // public static String toXml(Object o) throws XmlUtilsException {
- // try {
- // JSONObject root = new JSONObject();
- // JSONObject object = new JSONObject(o);
- // root.put(o.getClass().getSimpleName(), object);
- // return XML.toString(root);
- // } catch (JSONException e) {
- // throw new XmlUtilsException("Error encoding object to XML", e);
- // }
- // }
-
- public Object fromXml(String xml, Class> clazz) throws XmlUtilsException {
- try {
- return xmlMapper.readValue(xml, clazz);
- } catch (Exception e) {
- throw new XmlUtilsException("Error decoding " + xml + " to " + clazz.getName(), e);
- }
- }
-
- /**
- * Embeds the arrayNode into an ObjectNode with the given childKey. By default a
- * JSON array such as {"parent":[1, 2, 3,]} will be converted to:
- * 123.
- * This is not often desired as there is no paren object to encompass the array.
- * By calling this method given childKey = "child" and arrayNode = [1, 2, 3,],
- * method will return {"parent":{"child":[1, 2, 3,]}} which as a result will be
- * encoded to
- * 123.
- * Which is a more representative of the JSON ObjectNode.
- *
- * @param childKey: The key to be given to the child array object
- * @param arrayNode: The array node to be embedded in a ObjectNode
- * @return OBjectNode representation of the given arrayNode redy to be converted
- * to XML
- */
- public static ObjectNode createEmbeddedJsonArrayForXmlConversion(String childKey, JsonNode arrayNode) {
- ObjectNode childNode = staticXmlMapper.createObjectNode();
- childNode.set(childKey, arrayNode);
- return childNode;
- }
-
- public static String toXmlStatic(Object o) throws XmlUtilsException {
- String xml;
- try {
- xml = staticXmlMapper.writeValueAsString(o);
- } catch (Exception e) {
- throw new XmlUtilsException("Error encoding object to XML", e);
- }
- return xml;
- }
-
- public static Object fromXmlS(String xml, Class> clazz) throws XmlUtilsException {
- try {
- return staticXmlMapper.readValue(xml, clazz);
- } catch (Exception e) {
- throw new XmlUtilsException("Error decoding " + xml + " to " + clazz.getName(), e);
- }
- }
-
- public static ObjectNode toObjectNode(String xml) throws XmlUtilsException {
- try {
- JSONObject jsonObject = XML.toJSONObject(xml, true);
- String jsonString = jsonObject.toString();
- return JsonUtils.toObjectNode(jsonString);
-
- /*
- * Due to issues with XmlMapper converting "xml arrays" to a valid DOM
- * collection we could not use it in this context. Hence the above workaround
- * was adopted. See:
- * https://github.com/FasterXML/jackson-dataformat-xml/issues/187
- * https://github.com/FasterXML/jackson-dataformat-xml/issues/205
- */
- // return (ObjectNode) staticXmlMapper.readTree(xml);
- } catch (Exception e) {
- throw new XmlUtilsException("Error decoding " + xml + "to ObjectNode", e);
- }
- }
-
- public static JSONObject toJSONObject(String xml) throws XmlUtilsException {
- try {
- return XML.toJSONObject(xml, true);
- } catch (Exception e) {
- throw new XmlUtilsException("Error decoding " + xml + "to JSONObject", e);
- }
- }
-
- public static JsonNode getJsonNode(String tree, String fieldName) throws XmlUtilsException {
- JsonNode jsonNode;
- try {
- jsonNode = staticXmlMapper.readTree(tree);
- } catch (Exception e) {
- throw new XmlUtilsException("Error getting field name " + fieldName + " from " + tree, e);
- }
- return jsonNode.get(fieldName);
- }
-
- public XmlMapper getXmlMapper() {
- return xmlMapper;
- }
-
- public static XmlMapper getStaticXmlMapper() {
- return staticXmlMapper;
- }
+ /**
+ * Custom XML exception for handling XML parsing errors.
+ */
+ public static class XmlUtilsException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public XmlUtilsException(String string) {
+ super(string);
+ }
+
+ public XmlUtilsException(String string, Exception e) {
+ super(string, e);
+ }
+
+ }
+
+ private XmlMapper xmlMapper = new XmlMapper();
+ private static XmlMapper staticXmlMapper = new XmlMapper();
+
+ static {
+ var builder = new Builder(staticXmlMapper);
+ builder.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ builder.defaultUseWrapper(true);
+ staticXmlMapper = builder.build();
+ }
+
+ /**
+ * Instantiates the XML utility as an object instead of using static methods.
+ */
+ public XmlUtils() {
+ super();
+ var builder = new Builder(xmlMapper);
+ builder.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ builder.defaultUseWrapper(true);
+ xmlMapper = builder.build();
+ }
+
+ public String toXml(Object o) throws JsonProcessingException {
+ String xml = xmlMapper.writeValueAsString(o);
+ return xml;
+ }
+
+ // public static String toXml(Object o) throws XmlUtilsException {
+ // try {
+ // JSONObject root = new JSONObject();
+ // JSONObject object = new JSONObject(o);
+ // root.put(o.getClass().getSimpleName(), object);
+ // return XML.toString(root);
+ // } catch (JSONException e) {
+ // throw new XmlUtilsException("Error encoding object to XML", e);
+ // }
+ // }
+
+ /**
+ * Attempt to convert an XML String into the specified class type.
+ *
+ * @param xml The XML String value
+ * @param clazz The class type
+ * @return The deserialized object that is of type clazz
+ */
+ public Object fromXml(String xml, Class> clazz) throws XmlUtilsException {
+ try {
+ return xmlMapper.readValue(xml, clazz);
+ } catch (Exception e) {
+ throw new XmlUtilsException("Error decoding " + xml + " to " + clazz.getName(), e);
+ }
+ }
+
+ /**
+ * Embeds the arrayNode into an ObjectNode with the given childKey. By default a
+ * JSON array such as {"parent":[1, 2, 3,]} will be converted to:
+ * 123.
+ * This is not often desired as there is no paren object to encompass the array.
+ * By calling this method given childKey = "child" and arrayNode = [1, 2, 3,],
+ * method will return {"parent":{"child":[1, 2, 3,]}} which as a result will be
+ * encoded to
+ * 123.
+ * Which is a more representative of the JSON ObjectNode.
+ *
+ * @param childKey The key to be given to the child array object
+ * @param arrayNode The array node to be embedded in a ObjectNode
+ * @return OBjectNode representation of the given arrayNode redy to be converted
+ * to XML
+ */
+ public static ObjectNode createEmbeddedJsonArrayForXmlConversion(String childKey,
+ JsonNode arrayNode) {
+ ObjectNode childNode = staticXmlMapper.createObjectNode();
+ childNode.set(childKey, arrayNode);
+ return childNode;
+ }
+
+ /**
+ * Find a component of an XML string by specifying the tag name.
+ *
+ * @param xml The XML String to be searched
+ * @param tagName The tag name to be identified
+ * @return The XML String only consisting of the tag and its children
+ */
+ public static String findXmlContentString(String xml, String tagName) {
+ // Construct the start and end tag strings
+ String startTag = "<" + tagName + ">";
+ String endTag = "" + tagName + ">";
+
+ // Find the start index of the start tag
+ int startIndex = xml.indexOf(startTag);
+ if (startIndex == -1) {
+ // Tag not found
+ return null;
+ }
+
+ // Find the end index of the end tag, after the start tag
+ int endIndex = xml.indexOf(endTag, startIndex);
+ if (endIndex == -1) {
+ // End tag not found
+ return null;
+ }
+
+ // Add the length of the end tag to get the complete end index
+ endIndex += endTag.length();
+
+ return xml.substring(startIndex, endIndex);
+ }
+
+ /**
+ * Static method to attempt to serialize an object into XML.
+ *
+ * @param o The object to be serialized
+ * @return The serialized XML String
+ * @throws XmlUtilsException Throws an exception when failing to serialize the object
+ */
+ public static String toXmlStatic(Object o) throws XmlUtilsException {
+ String xml;
+ try {
+ xml = staticXmlMapper.writeValueAsString(o);
+ } catch (Exception e) {
+ throw new XmlUtilsException("Error encoding object to XML", e);
+ }
+ return xml;
+ }
+
+ /**
+ * Static method to attempt to deserialize an XML String into a specified object type.
+ *
+ * @param xml The xml String to be deserialized
+ * @param clazz The class type
+ * @return The deserialized object of class type clazz
+ * @throws XmlUtilsException Throws an exception when failing to deserialize the XML String
+ */
+ public static Object fromXmlS(String xml, Class> clazz) throws XmlUtilsException {
+ try {
+ return staticXmlMapper.readValue(xml, clazz);
+ } catch (Exception e) {
+ throw new XmlUtilsException("Error decoding " + xml + " to " + clazz.getName(), e);
+ }
+ }
+
+ /**
+ * Static method to attempt to transform an XML String into an ObjectNode.
+ *
+ * @param xml The xml String to be transformed
+ * @return An ObjectNode representing the XML
+ * @throws XmlUtilsException Throws an exception when failing to transform into an ObjectNode
+ */
+ public static ObjectNode toObjectNode(String xml) throws XmlUtilsException {
+ try {
+ JSONObject jsonObject = XML.toJSONObject(xml, true);
+ String jsonString = jsonObject.toString();
+ return JsonUtils.toObjectNode(jsonString);
+
+ /*
+ * Due to issues with XmlMapper converting "xml arrays" to a valid DOM
+ * collection we could not use it in this context. Hence the above workaround
+ * was adopted. See:
+ * https://github.com/FasterXML/jackson-dataformat-xml/issues/187
+ * https://github.com/FasterXML/jackson-dataformat-xml/issues/205
+ */
+ // return (ObjectNode) staticXmlMapper.readTree(xml);
+ } catch (Exception e) {
+ throw new XmlUtilsException("Error decoding " + xml + "to ObjectNode", e);
+ }
+ }
+
+ /**
+ * Static method to attempt to transform an XML String into a JSONObject.
+ *
+ * @param xml The xml String to be transformed
+ * @return A JSONObject representing the XML
+ * @throws XmlUtilsException Throws an exception when failing to transform into an JSONObject
+ */
+ public static JSONObject toJSONObject(String xml) throws XmlUtilsException {
+ try {
+ return XML.toJSONObject(xml, true);
+ } catch (Exception e) {
+ throw new XmlUtilsException("Error decoding " + xml + "to JSONObject", e);
+ }
+ }
+
+ /**
+ * Get a specific JSON node from an XML String based on a field name.
+ *
+ * @param tree The xml String to be parsed
+ * @param fieldName The field name to be parsed for
+ * @return The JsonNode for the specified field name
+ * @throws XmlUtilsException Throws an exception when failing to parse the XML String
+ */
+ public static JsonNode getJsonNode(String tree, String fieldName) throws XmlUtilsException {
+ JsonNode jsonNode;
+ try {
+ jsonNode = staticXmlMapper.readTree(tree);
+ } catch (Exception e) {
+ throw new XmlUtilsException("Error getting field name " + fieldName + " from " + tree, e);
+ }
+ return jsonNode.get(fieldName);
+ }
+
+ public XmlMapper getXmlMapper() {
+ return xmlMapper;
+ }
+
+ public static XmlMapper getStaticXmlMapper() {
+ return staticXmlMapper;
+ }
}
diff --git a/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimData.java b/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimData.java
index 1f1fac5f4..22d99af05 100644
--- a/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimData.java
+++ b/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimData.java
@@ -15,6 +15,9 @@
******************************************************************************/
package us.dot.its.jpo.ode.model;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import static com.fasterxml.jackson.annotation.JsonTypeInfo.*;
+
public class OdeTimData extends OdeData {
private static final long serialVersionUID = 2057040404896561615L;
@@ -29,4 +32,16 @@ public OdeTimData(OdeMsgMetadata metadata, OdeMsgPayload payload) {
super(metadata, payload);
}
+ @Override
+ @JsonTypeInfo(use = Id.CLASS, include = As.EXISTING_PROPERTY, defaultImpl = OdeTimMetadata.class)
+ public void setMetadata(OdeMsgMetadata metadata) {
+ super.setMetadata(metadata);
+ }
+
+ @Override
+ @JsonTypeInfo(use = Id.CLASS, include = As.EXISTING_PROPERTY, defaultImpl = OdeTimPayload.class)
+ public void setPayload(OdeMsgPayload payload) {
+ super.setPayload(payload);
+ }
+
}
diff --git a/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimPayload.java b/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimPayload.java
index b5e9e0e7b..b6d34dfe7 100644
--- a/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimPayload.java
+++ b/jpo-ode-core/src/main/java/us/dot/its/jpo/ode/model/OdeTimPayload.java
@@ -1,32 +1,47 @@
/*******************************************************************************
* Copyright 2018 572682
*
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ *
Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ *
http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
+ *
Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
******************************************************************************/
+
package us.dot.its.jpo.ode.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
import us.dot.its.jpo.ode.plugin.j2735.OdeTravelerInformationMessage;
+import us.dot.its.jpo.ode.plugin.j2735.travelerinformation.TravelerInformation;
+/**
+ * ODE TIM payload class for both J2735 TravelerInformation and ODE
+ * TIM Creator OdeTravelerInformationMessage.
+ */
public class OdeTimPayload extends OdeMsgPayload {
- private static final long serialVersionUID = 7061315628111448390L;
+ private static final long serialVersionUID = 7061315628111448390L;
+
+ public OdeTimPayload() {
+ this(new OdeTravelerInformationMessage());
+ }
- public OdeTimPayload() {
- this(new OdeTravelerInformationMessage());
- }
+ public OdeTimPayload(OdeTravelerInformationMessage tim) {
+ super(tim);
+ this.setData(tim);
+ }
- public OdeTimPayload(OdeTravelerInformationMessage tim) {
- super(tim);
- this.setData(tim);
- }
+ @JsonCreator
+ public OdeTimPayload(@JsonProperty("data") TravelerInformation tim) {
+ super(tim);
+ this.setData(tim);
+ }
}
diff --git a/jpo-ode-core/src/main/resources/schemas/schema-map.json b/jpo-ode-core/src/main/resources/schemas/schema-map.json
index 85495546a..89c102e49 100644
--- a/jpo-ode-core/src/main/resources/schemas/schema-map.json
+++ b/jpo-ode-core/src/main/resources/schemas/schema-map.json
@@ -1,4 +1,4 @@
-{
+{
"$schema": "http://json-schema.org/draft-04/schema#",
"properties": {
"metadata": {
@@ -791,185 +791,177 @@
"nodeList": {
"properties": {
"nodes": {
- "properties": {
- "NodeXY": {
- "items": [
- {
+ "type": "array",
+ "items": [
+ {
+ "properties": {
+ "attributes": {
+ "properties": {
+ "dElevation": {
+ "type": "number"
+ },
+ "dWidth": {
+ "type": "null"
+ },
+ "data": {
+ "type": "null"
+ },
+ "disabled": {
+ "type": "null"
+ },
+ "enabled": {
+ "type": "null"
+ },
+ "localNode": {
+ "type": "null"
+ }
+ },
+ "required": [
+ "dElevation"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "delta": {
"properties": {
- "attributes": {
+ "nodeLatLon": {
"properties": {
- "dElevation": {
+ "lat": {
"type": "number"
},
- "dWidth": {
- "type": "null"
- },
- "data": {
- "type": "null"
- },
- "disabled": {
- "type": "null"
- },
- "enabled": {
- "type": "null"
- },
- "localNode": {
- "type": "null"
+ "lon": {
+ "type": "number"
}
},
"required": [
- "dElevation"
+ "lon",
+ "lat"
],
"type": [
"object",
"null"
]
},
- "delta": {
+ "nodeXY1": {
"properties": {
- "nodeLatLon": {
- "properties": {
- "lat": {
- "type": "number"
- },
- "lon": {
- "type": "number"
- }
- },
- "required": [
- "lon",
- "lat"
- ],
- "type": [
- "object",
- "null"
- ]
+ "x": {
+ "type": "number"
},
- "nodeXY1": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY2": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY2": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY3": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY3": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY4": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY4": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY5": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY5": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY6": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY6": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
}
},
- "type": "object"
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
}
},
- "required": [
- "delta"
- ],
"type": "object"
}
+ },
+ "required": [
+ "delta"
],
- "type": "array"
+ "type": "object"
}
- },
- "required": [
- "NodeXY"
- ],
- "type": "object"
+ ]
}
},
"required": [
@@ -1821,185 +1813,177 @@
"nodeList": {
"properties": {
"nodes": {
- "properties": {
- "NodeXY": {
- "items": [
- {
+ "type": "array",
+ "items": [
+ {
+ "properties": {
+ "attributes": {
+ "properties": {
+ "dElevation": {
+ "type": "number"
+ },
+ "dWidth": {
+ "type": "null"
+ },
+ "data": {
+ "type": "null"
+ },
+ "disabled": {
+ "type": "null"
+ },
+ "enabled": {
+ "type": "null"
+ },
+ "localNode": {
+ "type": "null"
+ }
+ },
+ "required": [
+ "dElevation"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "delta": {
"properties": {
- "attributes": {
+ "nodeLatLon": {
"properties": {
- "dElevation": {
+ "lat": {
"type": "number"
},
- "dWidth": {
- "type": "null"
- },
- "data": {
- "type": "null"
- },
- "disabled": {
- "type": "null"
- },
- "enabled": {
- "type": "null"
- },
- "localNode": {
- "type": "null"
+ "lon": {
+ "type": "number"
}
},
"required": [
- "dElevation"
+ "lon",
+ "lat"
],
"type": [
"object",
"null"
]
},
- "delta": {
+ "nodeXY1": {
"properties": {
- "nodeLatLon": {
- "properties": {
- "lat": {
- "type": "number"
- },
- "lon": {
- "type": "number"
- }
- },
- "required": [
- "lon",
- "lat"
- ],
- "type": [
- "object",
- "null"
- ]
+ "x": {
+ "type": "number"
},
- "nodeXY1": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY2": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY2": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY3": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY3": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY4": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY4": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY5": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY5": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "nodeXY6": {
+ "properties": {
+ "x": {
+ "type": "number"
},
- "nodeXY6": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": [
- "object",
- "null"
- ]
+ "y": {
+ "type": "number"
}
},
- "type": "object"
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
}
},
- "required": [
- "delta"
- ],
"type": "object"
}
+ },
+ "required": [
+ "delta"
],
- "type": "array"
+ "type": "object"
}
- },
- "required": [
- "NodeXY"
- ],
- "type": "object"
+ ]
}
},
"required": [
diff --git a/jpo-ode-core/src/main/resources/schemas/schema-tim.json b/jpo-ode-core/src/main/resources/schemas/schema-tim.json
index 14ccfb46e..9076ee5c3 100644
--- a/jpo-ode-core/src/main/resources/schemas/schema-tim.json
+++ b/jpo-ode-core/src/main/resources/schemas/schema-tim.json
@@ -22,7 +22,7 @@
"type": "string"
},
"maxDurationTime": {
- "type": "string"
+ "type": "number"
},
"odePacketID": {
"type": "string"
@@ -40,7 +40,12 @@
"type": "string"
},
"receivedMessageDetails": {
- "type": "string"
+ "type": "object",
+ "properties": {
+ "rxSource": {
+ "type": "string"
+ }
+ }
},
"recordGeneratedAt": {
"type": "string"
@@ -52,10 +57,10 @@
"type": "string"
},
"sanitized": {
- "type": "string"
+ "type": "boolean"
},
"schemaVersion": {
- "type": "string"
+ "type": "number"
},
"securityResultCode": {
"type": "string"
@@ -255,10 +260,10 @@
"type": "object",
"properties": {
"nwCorner": {
- "$ref": "#/$defs/OdePosition3D"
+ "$ref": "#/$defs/Position3D"
},
"seCorner": {
- "$ref": "#/$defs/OdePosition3D"
+ "$ref": "#/$defs/Position3D"
}
},
"required": [
@@ -285,16 +290,16 @@
"type": "object",
"properties": {
"bundleId": {
- "type": "string"
+ "type": "number"
},
"bundleSize": {
- "type": "string"
+ "type": "number"
},
"recordId": {
- "type": "string"
+ "type": "number"
},
"serialNumber": {
- "type": "string"
+ "type": "number"
},
"streamId": {
"type": "string"
@@ -312,15 +317,7 @@
"type": "object",
"properties": {
"data": {
- "type": "object",
- "properties": {
- "MessageFrame": {
- "$ref": "#/$defs/OdeTimMessageFrame"
- }
- },
- "required": [
- "MessageFrame"
- ]
+ "$ref": "#/$defs/TravelerInformation"
},
"dataType": {
"type": "string"
@@ -331,34 +328,11 @@
"dataType"
]
},
- "OdeTimMessageFrame": {
- "type": "object",
- "properties": {
- "messageId": {
- "type": "string"
- },
- "value": {
- "type": "object",
- "properties": {
- "TravelerInformation": {
- "$ref": "#/$defs/J2735Tim"
- }
- },
- "required": [
- "TravelerInformation"
- ]
- }
- },
- "required": [
- "messageId",
- "value"
- ]
- },
- "J2735Tim": {
+ "TravelerInformation": {
"type": "object",
"properties": {
"timeStamp": {
- "type": "string"
+ "type": "number"
},
"packetID": {
"type": "string"
@@ -367,22 +341,15 @@
"type": "string"
},
"dataFrames": {
- "oneOf": [
- {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/OdeTimDataFrame"
- }
- ]
- },
+ "type": "array",
+ "prefixItems": [
{
- "$ref": "#/$defs/OdeTimDataFrame"
+ "$ref": "#/$defs/TravelerDataFrame"
}
]
},
"msgCnt": {
- "type": "string"
+ "type": "number"
}
},
"required": [
@@ -390,37 +357,19 @@
"msgCnt"
]
},
- "OdeTimDataFrame": {
- "type": "object",
- "properties": {
- "TravelerDataFrame": {
- "oneOf": [
- {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735TravelerDataFrame"
- }
- ]
- },
- {
- "$ref": "#/$defs/J2735TravelerDataFrame"
- }
- ]
- }
- },
- "required": [
- "TravelerDataFrame"
- ]
- },
- "J2735TravelerDataFrame": {
+ "TravelerDataFrame": {
"type": "object",
"properties": {
"notUsed": {
- "type": "string"
+ "type": "number"
},
"frameType": {
- "$ref": "#/$defs/J2735DF_FrameType"
+ "enum": [
+ "unknown",
+ "advisory",
+ "roadSignage",
+ "commercialSignage"
+ ]
},
"msgId": {
"oneOf": [
@@ -436,48 +385,49 @@
]
},
{
- "$ref": "#/$defs/J2735DF_MsgId_RoadSignId"
+ "type": "object",
+ "properties": {
+ "roadSignID": {
+ "$ref": "#/$defs/RoadSignID"
+ }
+ },
+ "required": [
+ "roadSignID"
+ ]
}
]
},
"startYear": {
- "type": "string"
+ "type": "number"
},
"startTime": {
- "type": "string"
+ "type": "number"
},
"durationTime": {
- "type": "string"
+ "type": "number"
},
"priority": {
- "type": "string"
+ "type": "number"
},
"notUsed1": {
- "type": "string"
+ "type": "number"
},
"regions": {
- "oneOf": [
- {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735DF_Regions"
- }
- ]
- },
+ "type": "array",
+ "prefixItems": [
{
- "$ref": "#/$defs/J2735DF_Regions"
+ "$ref": "#/$defs/GeographicalPath"
}
]
},
"notUsed2": {
- "type": "string"
+ "type": "number"
},
"notUsed3": {
- "type": "string"
+ "type": "number"
},
"content": {
- "$ref": "#/$defs/J2735DF_Content"
+ "$ref": "#/$defs/ContentChoice"
},
"url": {
"type": "string"
@@ -497,925 +447,1041 @@
"content"
]
},
- "J2735DF_FrameType": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "unknown": {
- "type": "string"
- }
- },
- "required": [
- "unknown"
- ]
+ "RoadSignID": {
+ "type": "object",
+ "properties": {
+ "position": {
+ "$ref": "#/$defs/Position3D"
},
- {
- "type": "object",
- "properties": {
- "advisory": {
- "type": "string"
- }
- },
- "required": [
- "advisory"
- ]
+ "viewAngle": {
+ "$ref": "#/$defs/HeadingSlice"
},
- {
- "type": "object",
- "properties": {
- "roadSignage": {
- "type": "string"
- }
- },
- "required": [
- "roadSignage"
+ "mutcdCode": {
+ "enum": [
+ "none",
+ "regulatory",
+ "warning",
+ "maintenance",
+ "motoristService",
+ "guide",
+ "rec"
]
},
- {
- "type": "object",
- "properties": {
- "commercialSignage": {
- "type": "string"
- }
- },
- "required": [
- "commercialSignage"
- ]
- }
- ]
- },
- "J2735DF_MsgId_RoadSignId": {
- "type": "object",
- "properties": {
- "roadSignID": {
- "type": "object",
- "properties": {
- "position": {
- "$ref": "#/$defs/J2735Position3D"
- },
- "viewAngle": {
- "type": "string"
- },
- "mutcdCode": {
- "$ref": "#/$defs/J2735MUTCDCode"
- }
- },
- "required": [
- "position",
- "viewAngle"
- ]
+ "crc": {
+ "type": "string"
}
},
"required": [
- "roadSignID"
+ "position",
+ "viewAngle"
]
},
- "J2735DF_Regions": {
+ "HeadingSlice": {
"type": "object",
"properties": {
- "GeographicalPath": {
- "oneOf": [
- {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735DF_GeographicalPath"
- }
- ]
- },
- {
- "$ref": "#/$defs/J2735DF_GeographicalPath"
- }
- ]
+ "from000-0to022-5degrees": {
+ "type": "boolean"
+ },
+ "from022-5to045-0degrees": {
+ "type": "boolean"
+ },
+ "from045-0to067-5degrees": {
+ "type": "boolean"
+ },
+ "from067-5to090-0degrees": {
+ "type": "boolean"
+ },
+ "from090-0to112-5degrees": {
+ "type": "boolean"
+ },
+ "from112-5to135-0degrees": {
+ "type": "boolean"
+ },
+ "from135-0to157-5degrees": {
+ "type": "boolean"
+ },
+ "from157-5to180-0degrees": {
+ "type": "boolean"
+ },
+ "from180-0to202-5degrees": {
+ "type": "boolean"
+ },
+ "from202-5to225-0degrees": {
+ "type": "boolean"
+ },
+ "from225-0to247-5degrees": {
+ "type": "boolean"
+ },
+ "from247-5to270-0degrees": {
+ "type": "boolean"
+ },
+ "from270-0to292-5degrees": {
+ "type": "boolean"
+ },
+ "from292-5to315-0degrees": {
+ "type": "boolean"
+ },
+ "from315-0to337-5degrees": {
+ "type": "boolean"
+ },
+ "from337-5to360-0degrees": {
+ "type": "boolean"
}
},
"required": [
- "GeographicalPath"
+ "from000-0to022-5degrees",
+ "from022-5to045-0degrees",
+ "from045-0to067-5degrees",
+ "from067-5to090-0degrees",
+ "from090-0to112-5degrees",
+ "from112-5to135-0degrees",
+ "from135-0to157-5degrees",
+ "from157-5to180-0degrees",
+ "from180-0to202-5degrees",
+ "from202-5to225-0degrees",
+ "from225-0to247-5degrees",
+ "from247-5to270-0degrees",
+ "from270-0to292-5degrees",
+ "from292-5to315-0degrees",
+ "from315-0to337-5degrees",
+ "from337-5to360-0degrees"
]
},
- "J2735DF_GeographicalPath": {
+ "GeographicalPath": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
- "$ref": "#/$defs/J2735RoadSegmentReferenceID"
+ "$ref": "#/$defs/RoadSegmentReferenceID"
},
"anchor": {
- "$ref": "#/$defs/J2735Position3D"
+ "$ref": "#/$defs/Position3D"
},
"laneWidth": {
- "type": "string"
+ "type": "number"
},
"directionality": {
- "$ref": "#/$defs/J2735DirectionOfUse"
+ "$ref": "#/$defs/DirectionOfUse"
},
"closedPath": {
- "$ref": "#/$defs/BooleanObject"
+ "type": "boolean"
},
"direction": {
- "type": "string"
+ "$ref": "#/$defs/HeadingSlice"
},
"description": {
- "$ref": "#/$defs/J2735DF_Regions_Description"
+ "$ref": "#/$defs/DescriptionChoice"
}
},
"required": [
"description"
]
},
- "J2735DirectionOfUse": {
+ "DirectionOfUse": {
+ "enum": [
+ "unavailable",
+ "forward",
+ "reverse",
+ "both"
+ ]
+ },
+ "DescriptionChoice": {
"oneOf": [
{
"type": "object",
"properties": {
- "unavailable": {
- "type": "string"
+ "path": {
+ "$ref": "#/$defs/OffsetSystem"
}
},
"required": [
- "unavailable"
+ "path"
]
},
{
"type": "object",
"properties": {
- "forward": {
- "type": "string"
+ "geometry": {
+ "$ref": "#/$defs/GeometricProjection"
}
},
"required": [
- "forward"
+ "geometry"
]
},
{
"type": "object",
"properties": {
- "reverse": {
- "type": "string"
+ "oldRegion": {
+ "$ref": "#/$defs/ValidRegion"
+ }
+ },
+ "required": [
+ "oldRegion"
+ ]
+ }
+ ]
+ },
+ "OffsetSystem": {
+ "type": "object",
+ "properties": {
+ "scale": {
+ "type": "number"
+ },
+ "offset": {
+ "$ref": "#/$defs/OffsetChoice"
+ }
+ },
+ "required": [
+ "offset"
+ ]
+ },
+ "OffsetChoice": {
+ "oneOf": [
+ {
+ "type": "object",
+ "properties": {
+ "xy": {
+ "$ref": "#/$defs/NodeListXY"
}
},
"required": [
- "reverse"
+ "xy"
]
},
{
"type": "object",
"properties": {
- "both": {
- "type": "string"
+ "ll": {
+ "$ref": "#/$defs/NodeListLL"
}
},
"required": [
- "both"
+ "ll"
]
}
]
},
- "J2735DF_Regions_Description": {
+ "NodeListXY": {
"oneOf": [
{
"type": "object",
"properties": {
- "path": {
- "oneOf": [
- {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735OffsetSystem"
- }
- ]
- },
+ "nodes": {
+ "type": "array",
+ "prefixItems": [
{
- "$ref": "#/$defs/J2735OffsetSystem"
+ "$ref": "#/$defs/NodeXY"
}
]
}
},
"required": [
- "path"
+ "nodes"
]
},
{
"type": "object",
"properties": {
- "geometry": {
- "oneOf": [
- {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735GeometricProjection"
- }
- ]
- },
- {
- "$ref": "#/$defs/J2735GeometricProjection"
- }
- ]
+ "computed": {
+ "$ref": "#/$defs/ComputedLane"
}
},
"required": [
- "geometry"
+ "computed"
]
}
]
},
- "J2735OffsetSystem": {
+ "NodeListLL": {
"type": "object",
"properties": {
- "scale": {
- "type": "string"
- },
- "offset": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "xy": {
- "$ref": "#/$defs/J2735NodeListXY"
- }
- },
- "required": [
- "xy"
- ]
- },
+ "nodes": {
+ "type": "array",
+ "prefixItems": [
{
- "type": "object",
- "properties": {
- "ll": {
- "$ref": "#/$defs/J2735NodeListLL"
- }
- },
- "required": [
- "ll"
- ]
+ "$ref": "#/$defs/NodeLL"
}
]
}
},
"required": [
- "offset"
+ "nodes"
]
},
- "J2735NodeListXY": {
+ "NodeXY": {
"type": "object",
"properties": {
- "nodes": {
- "type": "object",
- "properties": {
- "NodeXY": {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735NodeXY"
- }
- ]
- }
- },
- "required": [
- "NodeXY"
- ]
+ "delta": {
+ "$ref": "#/$defs/NodeOffsetPointXY"
+ },
+ "attributes": {
+ "$ref": "#/$defs/NodeAttributeSet"
}
},
"required": [
- "nodes"
+ "delta"
]
},
- "J2735NodeListLL": {
- "type": "object",
- "properties": {
- "nodes": {
+ "NodeOffsetPointXY": {
+ "oneOf": [
+ {
"type": "object",
"properties": {
- "NodeLL": {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735NodeLL"
- }
- ]
+ "nodeXY1": {
+ "$ref": "#/$defs/NodeXYPoint"
}
},
"required": [
- "NodeLL"
+ "nodeXY1"
]
- }
- },
- "required": [
- "nodes"
- ]
- },
- "J2735NodeXY": {
- "type": "object",
- "properties": {
- "delta": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "node-XY1": {
- "$ref": "#/$defs/J2735NodeXYDelta"
- }
- },
- "required": [
- "node-XY1"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-XY2": {
- "$ref": "#/$defs/J2735NodeXYDelta"
- }
- },
- "required": [
- "node-XY2"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-XY3": {
- "$ref": "#/$defs/J2735NodeXYDelta"
- }
- },
- "required": [
- "node-XY3"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-XY4": {
- "$ref": "#/$defs/J2735NodeXYDelta"
- }
- },
- "required": [
- "node-XY4"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-XY5": {
- "$ref": "#/$defs/J2735NodeXYDelta"
- }
- },
- "required": [
- "node-XY5"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-XY6": {
- "$ref": "#/$defs/J2735NodeXYDelta"
- }
- },
- "required": [
- "node-XY6"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-LatLon": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LatLon"
- ]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "nodeXY2": {
+ "$ref": "#/$defs/NodeXYPoint"
}
+ },
+ "required": [
+ "nodeXY2"
+ ]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "nodeXY3": {
+ "$ref": "#/$defs/NodeXYPoint"
+ }
+ },
+ "required": [
+ "nodeXY3"
+ ]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "nodeXY4": {
+ "$ref": "#/$defs/NodeXYPoint"
+ }
+ },
+ "required": [
+ "nodeXY4"
+ ]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "nodeXY5": {
+ "$ref": "#/$defs/NodeXYPoint"
+ }
+ },
+ "required": [
+ "nodeXY5"
+ ]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "nodeXY6": {
+ "$ref": "#/$defs/NodeXYPoint"
+ }
+ },
+ "required": [
+ "nodeXY6"
+ ]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "nodeLatLon": {
+ "$ref": "#/$defs/NodeLLmD"
+ }
+ },
+ "required": [
+ "nodeLatLon"
]
}
- },
- "required": [
- "delta"
]
},
- "J2735NodeLL": {
+ "NodeAttributeSet": {
"type": "object",
"properties": {
- "delta": {
- "oneOf": [
+ "localNode": {
+ "type": "array",
+ "prefixItems": [
{
- "type": "object",
- "properties": {
- "node-LL1": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LL1"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-LL2": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LL2"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-LL3": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LL3"
- ]
- },
- {
- "type": "object",
- "properties": {
- "node-LL4": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LL4"
- ]
- },
+ "$ref": "#/$defs/NodeAttributeXY"
+ }
+ ]
+ },
+ "disabled": {
+ "type": "array",
+ "prefixItems": [
{
- "type": "object",
- "properties": {
- "node-LL5": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LL5"
- ]
- },
+ "$ref": "#/$defs/SegmentAttributeXY"
+ }
+ ]
+ },
+ "enabled": {
+ "type": "array",
+ "prefixItems": [
{
- "type": "object",
- "properties": {
- "node-LL6": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LL6"
- ]
- },
+ "$ref": "#/$defs/SegmentAttributeXY"
+ }
+ ]
+ },
+ "data": {
+ "type": "array",
+ "prefixItems": [
{
- "type": "object",
- "properties": {
- "node-LatLon": {
- "$ref": "#/$defs/J2735NodeLLDelta"
- }
- },
- "required": [
- "node-LatLon"
- ]
+ "$ref": "#/$defs/LaneDataAttribute"
}
]
+ },
+ "dWidth": {
+ "type": "number"
+ },
+ "dElevation": {
+ "type": "number"
}
- },
- "required": [
- "delta"
+ }
+ },
+ "NodeAttributeXY": {
+ "enum": [
+ "reserved",
+ "stopLine",
+ "roundedCapStyleA",
+ "roundedCapStyleB",
+ "mergePoint",
+ "divergePoint",
+ "downstreamStopLine",
+ "downstreamStartNode",
+ "closedToTraffic",
+ "safeIsland",
+ "curbPresentAtStepOff",
+ "hydrantPresent"
]
},
- "J2735NodeXYDelta": {
+ "SegmentAttributeXY": {
+ "enum": [
+ "reserved",
+ "doNotBlock",
+ "whiteLine",
+ "mergingLaneLeft",
+ "mergingLaneRight",
+ "curbOnLeft",
+ "curbOnRight",
+ "loadingzoneOnLeft",
+ "loadingzoneOnRight",
+ "turnOutPointOnLeft",
+ "turnOutPointOnRight",
+ "adjacentParkingOnLeft",
+ "adjacentParkingOnRight",
+ "adjacentBikeLaneOnLeft",
+ "adjacentBikeLaneOnRight",
+ "sharedBikeLane",
+ "bikeBoxInFront",
+ "transitStopOnLeft",
+ "transitStopOnRight",
+ "transitStopInLane",
+ "sharedWithTrackedVehicle",
+ "safeIsland",
+ "lowCurbsPresent",
+ "rumbleStripPresent",
+ "audibleSignalingPresent",
+ "adaptiveTimingPresent",
+ "rfSignalRequestPresent",
+ "partialCurbIntrusion",
+ "taperToLeft",
+ "taperToRight",
+ "taperToCenterLine",
+ "parallelParking",
+ "headInParking",
+ "freeParking",
+ "timeRestrictionsOnParking",
+ "costToPark",
+ "midBlockCurbPresent",
+ "unEvenPavementPresent"
+ ]
+ },
+ "LaneDataAttribute": {
"type": "object",
"properties": {
- "x": {
- "type": "string"
+ "pathEndPointAngle": {
+ "type": "number"
},
- "y": {
- "type": "string"
+ "laneCrownPointCenter": {
+ "type": "number"
+ },
+ "laneCrownPointLeft": {
+ "type": "number"
+ },
+ "laneCrownPointRight": {
+ "type": "number"
+ },
+ "laneAngle": {
+ "type": "number"
+ },
+ "speedLimits": {
+ "type": "array",
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/RegulatorySpeedLimit"
+ }
+ ]
}
},
"required": [
- "x",
- "y"
+ "pathEndPointAngle",
+ "laneCrownPointCenter",
+ "laneCrownPointLeft",
+ "laneCrownPointRight",
+ "laneAngle",
+ "speedLimits"
]
},
- "J2735NodeLLDelta": {
+ "RegulatorySpeedLimit": {
"type": "object",
"properties": {
- "lat": {
- "type": "string"
+ "type": {
+ "enum": [
+ "unknown",
+ "maxSpeedInSchoolZone",
+ "maxSpeedInSchoolZoneWhenChildrenArePresent",
+ "maxSpeedInConstructionZone",
+ "vehicleMinSpeed",
+ "vehicleMaxSpeed",
+ "vehicleNightMaxSpeed",
+ "truckMinSpeed",
+ "truckMaxSpeed",
+ "truckNightMaxSpeed",
+ "vehiclesWithTrailersMinSpeed",
+ "vehiclesWithTrailersMaxSpeed",
+ "vehiclesWithTrailersNightMaxSpeed"
+ ]
},
- "lon": {
- "type": "string"
+ "speed": {
+ "type": "number"
}
},
"required": [
- "lon",
- "lat"
+ "type",
+ "speed"
]
},
- "J2735GeometricProjection": {
+ "NodeLL": {
"type": "object",
"properties": {
- "direction": {
- "type": "string"
- },
- "extent": {
- "type": "string"
- },
- "laneWidth": {
- "type": "string"
+ "delta": {
+ "$ref": "#/$defs/NodeOffsetPointLL"
},
- "circle": {
- "type": "object",
- "properties": {
- "center": {
- "$ref": "#/$defs/J2735Position3D"
- },
- "radius": {
- "type": "string"
- },
- "units": {
- "$ref": "#/$defs/J2735DistanceUnits"
- }
- },
- "required": [
- "center",
- "radius",
- "units"
- ]
+ "attributes": {
+ "$ref": "#/$defs/NodeAttributeSet"
}
},
"required": [
- "direction",
- "circle"
+ "delta"
]
},
- "J2735DF_Content": {
+ "NodeOffsetPointLL": {
"oneOf": [
{
"type": "object",
"properties": {
- "advisory": {
- "$ref": "#/$defs/J2735DF_ContentSequence"
+ "nodeLL1": {
+ "$ref": "#/$defs/NodeLLmD"
}
},
"required": [
- "advisory"
+ "nodeLL1"
]
},
{
"type": "object",
"properties": {
- "workZone": {
- "$ref": "#/$defs/J2735DF_ContentSequence"
+ "nodeLL2": {
+ "$ref": "#/$defs/NodeLLmD"
}
},
"required": [
- "workZone"
+ "nodeLL2"
]
},
{
"type": "object",
"properties": {
- "genericSign": {
- "$ref": "#/$defs/J2735DF_ContentSequence"
+ "nodeLL3": {
+ "$ref": "#/$defs/NodeLLmD"
}
},
"required": [
- "genericSign"
+ "nodeLL3"
]
},
{
"type": "object",
"properties": {
- "speedLimit": {
- "$ref": "#/$defs/J2735DF_ContentSequence"
+ "nodeLL4": {
+ "$ref": "#/$defs/NodeLLmD"
}
},
"required": [
- "speedLimit"
+ "nodeLL4"
]
},
{
"type": "object",
"properties": {
- "exitService": {
- "$ref": "#/$defs/J2735DF_ContentSequence"
+ "nodeLL5": {
+ "$ref": "#/$defs/NodeLLmD"
}
},
"required": [
- "exitService"
+ "nodeLL5"
]
- }
- ]
- },
- "J2735DF_ContentSequence": {
- "oneOf": [
+ },
{
"type": "object",
"properties": {
- "SEQUENCE": {
- "type": "array",
- "prefixItems": [
- {
- "$ref": "#/$defs/J2735DF_ContentSequenceItem"
- }
- ]
+ "nodeLL6": {
+ "$ref": "#/$defs/NodeLLmD"
}
},
"required": [
- "SEQUENCE"
+ "nodeLL6"
]
},
{
"type": "object",
"properties": {
- "SEQUENCE": {
- "$ref": "#/$defs/J2735DF_ContentSequenceItem"
+ "nodeLatLon": {
+ "$ref": "#/$defs/NodeLLmD"
}
},
"required": [
- "SEQUENCE"
+ "nodeLatLon"
]
}
]
},
- "J2735DF_ContentSequenceItem": {
+ "NodeXYPoint": {
"type": "object",
"properties": {
- "item": {
- "type": "object",
- "properties": {
- "itis": {
- "type": "string"
- }
- },
- "required": [
- "itis"
- ]
+ "x": {
+ "type": "number"
+ },
+ "y": {
+ "type": "number"
}
},
"required": [
- "item"
+ "x",
+ "y"
]
},
- "J2735Position3D": {
+ "NodeLLmD": {
"type": "object",
"properties": {
"lat": {
- "type": "string"
+ "type": "number"
},
- "long": {
- "type": "string"
- },
- "elevation": {
- "type": [
- "string",
- "null"
- ]
+ "lon": {
+ "type": "number"
}
},
"required": [
- "lat",
- "long"
+ "lon",
+ "lat"
]
},
- "OdePosition3D": {
+ "ComputedLane": {
"type": "object",
"properties": {
- "latitude": {
- "type": "string"
+ "referenceLaneId": {
+ "type": "number"
},
- "longitude": {
- "type": "string"
+ "offsetXaxis": {
+ "$ref": "#/$defs/OffsetXaxisChoice"
},
- "elevation": {
- "type": [
- "string",
- "null"
- ]
+ "offsetYaxis": {
+ "$ref": "#/$defs/OffsetYaxisChoice"
+ },
+ "rotateXY": {
+ "type": "number"
+ },
+ "scaleXaxis": {
+ "type": "number"
+ },
+ "scaleYaxis": {
+ "type": "number"
}
},
"required": [
- "latitude",
- "longitude"
+ "referenceLaneId",
+ "offsetXaxis",
+ "offsetYaxis"
]
},
- "J2735MUTCDCode": {
+ "OffsetXaxisChoice": {
"oneOf": [
{
"type": "object",
"properties": {
- "none": {
- "type": "string"
+ "small": {
+ "type": "number"
}
},
"required": [
- "none"
+ "small"
]
},
{
"type": "object",
"properties": {
- "regulatory": {
- "type": "string"
+ "large": {
+ "type": "number"
}
},
"required": [
- "regulatory"
+ "large"
]
- },
+ }
+ ]
+ },
+ "OffsetYaxisChoice": {
+ "oneOf": [
{
"type": "object",
"properties": {
- "warning": {
- "type": "string"
+ "small": {
+ "type": "number"
}
},
"required": [
- "warning"
+ "small"
]
},
{
"type": "object",
"properties": {
- "maintenance": {
- "type": "string"
+ "large": {
+ "type": "number"
}
},
"required": [
- "maintenance"
+ "large"
]
+ }
+ ]
+ },
+ "GeometricProjection": {
+ "type": "object",
+ "properties": {
+ "direction": {
+ "$ref": "#/$defs/HeadingSlice"
+ },
+ "extent": {
+ "$ref": "#/$defs/Extent"
},
+ "laneWidth": {
+ "type": "number"
+ },
+ "circle": {
+ "$ref": "#/$defs/Circle"
+ }
+ },
+ "required": [
+ "direction",
+ "circle"
+ ]
+ },
+ "Circle": {
+ "type": "object",
+ "properties": {
+ "center": {
+ "$ref": "#/$defs/Position3D"
+ },
+ "radius": {
+ "type": "number"
+ },
+ "units": {
+ "$ref": "#/$defs/DistanceUnits"
+ }
+ },
+ "required": [
+ "center",
+ "radius",
+ "units"
+ ]
+ },
+ "ValidRegion": {
+ "type": "object",
+ "properties": {
+ "direction": {
+ "$ref": "#/$defs/HeadingSlice"
+ },
+ "extent": {
+ "$ref": "#/$defs/Extent"
+ },
+ "area": {
+ "$ref": "#/$defs/AreaChoice"
+ }
+ },
+ "required": [
+ "direction",
+ "extent",
+ "area"
+ ]
+ },
+ "Extent": {
+ "enum": [
+ "useInstantlyOnly",
+ "useFor3meters",
+ "useFor10meters",
+ "useFor50meters",
+ "useFor100meters",
+ "useFor500meters",
+ "useFor1000meters",
+ "useFor5000meters",
+ "useFor10000meters",
+ "useFor50000meters",
+ "useFor100000meters",
+ "useFor500000meters",
+ "useFor1000000meters",
+ "useFor5000000meters",
+ "useFor10000000meters",
+ "forever"
+ ]
+ },
+ "AreaChoice": {
+ "oneOf": [
{
"type": "object",
"properties": {
- "motoristService": {
- "type": "string"
+ "shapePointSet": {
+ "$ref": "#/$defs/ShapePointSet"
}
},
"required": [
- "motoristService"
+ "shapePointSet"
]
},
{
"type": "object",
"properties": {
- "guide": {
- "type": "string"
+ "circle": {
+ "$ref": "#/$defs/Circle"
}
},
"required": [
- "guide"
+ "circle"
]
},
{
"type": "object",
"properties": {
- "rec": {
- "type": "string"
+ "regionPointSet": {
+ "$ref": "#/$defs/RegionPointSet"
}
},
"required": [
- "rec"
+ "regionPointSet"
]
}
]
},
- "J2735RoadSegmentReferenceID": {
+ "ShapePointSet": {
"type": "object",
"properties": {
- "id": {
- "type": "string"
+ "anchor": {
+ "$ref": "#/$defs/Position3D"
},
- "region": {
- "type": "string"
+ "laneWidth": {
+ "type": "number"
+ },
+ "directionality": {
+ "$ref": "#/$defs/DirectionOfUse"
+ },
+ "nodeList": {
+ "$ref": "#/$defs/NodeListXY"
}
},
"required": [
- "id"
+ "nodeList"
]
},
- "J2735DistanceUnits": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "centimeter": {
- "type": "string"
- }
- },
- "required": [
- "centimeter"
- ]
+ "RegionPointSet": {
+ "type": "object",
+ "properties": {
+ "anchor": {
+ "$ref": "#/$defs/Position3D"
},
- {
- "type": "object",
- "properties": {
- "cm2-5": {
- "type": "string"
- }
- },
- "required": [
- "cm2-5"
- ]
+ "scale": {
+ "type": "number"
},
- {
- "type": "object",
- "properties": {
- "decimeter": {
- "type": "string"
+ "nodeList": {
+ "type": "array",
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/RegionList"
}
- },
- "required": [
- "decimeter"
]
+ }
+ },
+ "required": [
+ "nodeList"
+ ]
+ },
+ "RegionList": {
+ "type": "object",
+ "properties": {
+ "xOffset": {
+ "type": "number"
+ },
+ "yOffset": {
+ "type": "number"
},
+ "zOffset": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "xOffset",
+ "yOffset"
+ ]
+ },
+ "ContentChoice": {
+ "oneOf": [
{
"type": "object",
"properties": {
- "meter": {
- "type": "string"
+ "advisory": {
+ "$ref": "#/$defs/ContentSequence"
}
},
"required": [
- "meter"
+ "advisory"
]
},
{
"type": "object",
"properties": {
- "kilometer": {
- "type": "string"
+ "workZone": {
+ "$ref": "#/$defs/ContentSequence"
}
},
"required": [
- "kilometer"
+ "workZone"
]
},
{
"type": "object",
"properties": {
- "foot": {
- "type": "string"
+ "genericSign": {
+ "$ref": "#/$defs/ContentSequence"
}
},
"required": [
- "foot"
+ "genericSign"
]
},
{
"type": "object",
"properties": {
- "yard": {
- "type": "string"
+ "speedLimit": {
+ "$ref": "#/$defs/ContentSequence"
}
},
"required": [
- "yard"
+ "speedLimit"
]
},
{
"type": "object",
"properties": {
- "mile": {
- "type": "string"
+ "exitService": {
+ "$ref": "#/$defs/ContentSequence"
}
},
"required": [
- "mile"
+ "exitService"
]
}
]
},
- "BooleanObject": {
- "oneOf": [
+ "ContentSequence": {
+ "type": "array",
+ "prefixItems": [
{
+ "$ref": "#/$defs/ContentSequenceItem"
+ }
+ ]
+ },
+ "ContentSequenceItem": {
+ "type": "object",
+ "properties": {
+ "item": {
"type": "object",
"properties": {
- "true": {
- "type": "string"
+ "itis": {
+ "type": ["string", "number"]
}
},
"required": [
- "true"
+ "itis"
]
+ }
+ },
+ "required": [
+ "item"
+ ]
+
+ },
+ "Position3D": {
+ "type": "object",
+ "properties": {
+ "lat": {
+ "type": "number"
},
- {
- "type": "object",
- "properties": {
- "false": {
- "type": "string"
- }
- },
- "required": [
- "false"
- ]
+ "long": {
+ "type": "number"
+ },
+ "elevation": {
+ "type": "number"
}
+ },
+ "required": [
+ "lat",
+ "long"
+ ]
+ },
+ "RoadSegmentReferenceID": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "region": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "DistanceUnits": {
+ "enum": [
+ "centimeter",
+ "cm2-5",
+ "decimeter",
+ "meter",
+ "kilometer",
+ "foot",
+ "yard",
+ "mile"
]
}
}
diff --git a/jpo-ode-core/src/test/java/us/dot/its/jpo/ode/model/OdeTimDataTest.java b/jpo-ode-core/src/test/java/us/dot/its/jpo/ode/model/OdeTimDataTest.java
index 9a626ccff..6a92a0ce7 100644
--- a/jpo-ode-core/src/test/java/us/dot/its/jpo/ode/model/OdeTimDataTest.java
+++ b/jpo-ode-core/src/test/java/us/dot/its/jpo/ode/model/OdeTimDataTest.java
@@ -1,36 +1,40 @@
package us.dot.its.jpo.ode.model;
+import static org.junit.Assert.assertEquals;
+
import com.fasterxml.jackson.databind.JsonNode;
import com.networknt.schema.JsonSchema;
import com.networknt.schema.JsonSchemaFactory;
import com.networknt.schema.SpecVersion;
import com.networknt.schema.ValidationMessage;
-
-import us.dot.its.jpo.ode.util.JsonUtils;
-
+import java.io.File;
+import java.nio.file.Files;
import java.util.Set;
-
import org.junit.jupiter.api.Test;
+import us.dot.its.jpo.ode.util.JsonUtils;
-import static org.junit.Assert.*;
-
+/**
+ * Tests for verifying the TIM schema is functional with the TIM JSON output.
+ */
public class OdeTimDataTest {
- private static final String SCHEMA_VERSION = "7";
- private static final String ASN1_STRING = "005f498718cca69ec1a04600000100105d9b46ec5be401003a0103810040038081d4001f80d07016da410000000000000bbc2b0f775d9b0309c271431fa166ee0a27fff93f136b8205a0a107fb2ef979f4c5bfaeec97e4ad70c2fb36cd9730becdb355cc2fd2a7556b160b98b46ab98ae62c185fa55efb468d5b4000000004e2863f42cddc144ff7980040401262cdd7b809c509f5c62cdd35519c507b9062cdcee129c505cf262cdca5ff9c50432c62cdc5d3d9c502e3e62cdc13e79c501e9262cdbca2d9c5013ee62cdb80359c500e6a62cdb36299c500bc862cdaec1d9c50093c62cdaa2109c5006ea1080203091a859eeebb36006001830001aad27f4ff7580001aad355e39b5880a30029d6585009ef808332d8d9f80c3855151b38c772f765007967ec1170bcb7937f5cb880a25a52863493bcb87570dbcb5abc6bfb2faec606cfa34eb95a24790b2017366d3aabe7729e";
-
- private static final String json = String.format("{\"metadata\":{\"securityResultCode\":\"\",\"recordGeneratedBy\":\"RSU\",\"schemaVersion\":\"%s\",\"odePacketID\":\"\",\"sanitized\":\"false\",\"asn1\":\"%s\",\"recordType\":\"timMsg\",\"recordGeneratedAt\":\"\",\"maxDurationTime\":\"0\",\"odeTimStartDateTime\":\"\",\"receivedMessageDetails\":\"\",\"payloadType\":\"us.dot.its.jpo.ode.model.OdeTimPayload\",\"serialId\":{\"recordId\":\"0\",\"serialNumber\":\"0\",\"streamId\":\"11ad5323-ec81-4694-8cd0-eb88ca08728e\",\"bundleSize\":\"1\",\"bundleId\":\"0\"},\"logFileName\":\"\",\"odeReceivedAt\":\"2022-12-24T02:24:38.248417Z\",\"originIp\":\"172.18.0.1\"},\"payload\":{\"data\":{\"MessageFrame\":{\"messageId\":\"31\",\"value\":{\"TravelerInformation\":{\"timeStamp\":\"449089\",\"packetID\":\"0000000000000BBC2B\",\"urlB\":\"null\",\"dataFrames\":{\"TravelerDataFrame\":{\"regions\":{\"GeographicalPath\":{\"closedPath\":{\"false\":\"\"},\"anchor\":{\"lat\":\"411269876\",\"long\":\"-1047269563\"},\"name\":\"westbound_I-80_366.0_365.0_RSU-10.145.1.100_RW_4456\",\"laneWidth\":\"32700\",\"directionality\":{\"both\":\"\"},\"description\":{\"path\":{\"offset\":{\"xy\":{\"nodes\":{\"NodeXY\":[{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047287423\",\"lat\":\"411264686\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047305390\",\"lat\":\"411260104\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047323629\",\"lat\":\"411256185\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047342080\",\"lat\":\"411252886\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047360706\",\"lat\":\"411250207\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047379480\",\"lat\":\"411248201\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047398354\",\"lat\":\"411246839\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047417290\",\"lat\":\"411246133\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047436246\",\"lat\":\"411245796\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047455202\",\"lat\":\"411245470\"}}},{\"delta\":{\"node-LatLon\":{\"lon\":\"-1047474159\",\"lat\":\"411245173\"}}}]}}},\"scale\":\"0\"}},\"id\":{\"id\":\"0\",\"region\":\"0\"},\"direction\":\"0000000000010000\"}},\"durationTime\":\"1440\",\"notUsed2\":\"0\",\"notUsed3\":\"0\",\"startYear\":\"2018\",\"msgId\":{\"roadSignID\":{\"viewAngle\":\"1111111111111111\",\"mutcdCode\":{\"warning\":\"\"},\"position\":{\"lat\":\"411269876\",\"long\":\"-1047269563\"}}},\"priority\":\"5\",\"content\":{\"advisory\":{\"SEQUENCE\":[{\"item\":{\"itis\":\"777\"}},{\"item\":{\"itis\":\"13579\"}}]}},\"url\":\"null\",\"notUsed\":\"0\",\"notUsed1\":\"0\",\"frameType\":{\"advisory\":\"\"},\"startTime\":\"448260\"}},\"msgCnt\":\"1\"}}}},\"dataType\":\"TravelerInformation\"}}", SCHEMA_VERSION, ASN1_STRING);
-
- //
- // Note that OdeTimData does not have annotations to support deserialization, so serialization/deserialization is not tested here.
- //
-
- @Test
- public void shouldValidateJson() throws Exception {
- // Load json schema from resource
- JsonSchemaFactory factory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V202012);
- final JsonSchema schema = factory.getSchema(getClass().getClassLoader().getResource("schemas/schema-tim.json").toURI());
- final JsonNode node = (JsonNode)JsonUtils.fromJson(json, JsonNode.class);
- Set validationMessages = schema.validate(node);
- assertEquals(String.format("Json validation errors: %s", validationMessages), 0, validationMessages.size());
- }
+ @Test
+ public void shouldValidateJson() throws Exception {
+ // Load test JSON
+ String jsonFilePath =
+ "src/test/resources/CVMessages/TIM_test.json";
+ File jsonFile = new File(jsonFilePath);
+ byte[] jsonData = Files.readAllBytes(jsonFile.toPath());
+ String json = new String(jsonData);
+
+ // Load JSON schema from resource
+ JsonSchemaFactory factory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V202012);
+ final JsonSchema schema = factory
+ .getSchema(getClass().getClassLoader().getResource("schemas/schema-tim.json").toURI());
+ final JsonNode node = (JsonNode) JsonUtils.fromJson(json, JsonNode.class);
+ Set validationMessages = schema.validate(node);
+ assertEquals(
+ String.format("Json validation errors: %s", validationMessages),
+ 0,
+ validationMessages.size());
+ }
}
diff --git a/jpo-ode-core/src/test/resources/CVMessages/TIM_test.json b/jpo-ode-core/src/test/resources/CVMessages/TIM_test.json
new file mode 100644
index 000000000..3e096b913
--- /dev/null
+++ b/jpo-ode-core/src/test/resources/CVMessages/TIM_test.json
@@ -0,0 +1 @@
+{"metadata":{"logFileName":"","recordType":"timMsg","securityResultCode":"success","receivedMessageDetails":{"rxSource":"NA"},"payloadType":"us.dot.its.jpo.ode.model.OdeTimPayload","serialId":{"streamId":"8af76b08-89bf-422e-b674-0f0ee065666f","bundleSize":1,"bundleId":0,"recordId":0,"serialNumber":0},"odeReceivedAt":"2024-12-06T10:39:42.806Z","schemaVersion":7,"maxDurationTime":0,"recordGeneratedAt":"","recordGeneratedBy":"RSU","sanitized":false,"odePacketID":"","odeTimStartDateTime":"","asn1":"001F830A752544F94F4354455420535452124C16B4FA27D64F431A94AC28F232828FF05260B5CA82DDFB227A687CA09CFDE87C4B0ED1C8800280204A865BB2C265D1E4F5D3A877C07F8093FC3D820142C4EB15C7AC09CE3356F45A90200118358186A148D3F13220B227C18569099E2D1232A28B5F2579208E479151D45D438BEFF80DB0C08CED3F45A50103103102088C1A44A152889AFA7F62218940E831C20F35EA1232777BF31146022C71408809E5EB7BA1D52835D8A040D83367520C4AB397658B07E21393A041060D049E825C15FCF56AFF05260B58E40024126EDBD550F6D519709FDE4CF880201602008CEE4ACA5DE274975513846DD7AD77F839305AD383175AA8A497954C284E668FFE4F0710D80802810030EAC2535BCD6AE047899B1CE75405C8E6936419C672A85F8900C50B428CA3188CA4E1101B485DEE47349B20CE339542FC5654852A1484C9C0A0B6DEBB81DB91CD26C8338CE550BF31188B6041101F08134A407147800DFCF8E5FE0A4C16B2BF3A3A253269429B3B8198F71B71F8C902002C008005DD1174A86649950714134C54C82F4C0012B9C982D69B5BEADBF1C99BEFD660C6A4200201A7A1ECCA540B60B0AA27F8093AC4BF831472A28ECD2E0203575E8F15F5000818817507D68CC505CF4497E8219CA2288A03C81503120AEB852B7507D68CC505CF4497E2121346A090E8061520293D37841E41530E9BF4214E93C326CF8502830F0C081FF9D71FE064C1BAA780A12351A24D300B6FD25F085703880101600022BE028AC1105C1D5CB0F0E001A42F7F849305AD3E9B408EB43464DC861E6234918C8667857300022C400087E511D765E294CF3507435289D7EBBC2849A4982D69F494982D524C16B4FA36827A1D6C31DFDBE55A627F819307EA49F19AA77C773D119EA690CE094883E0100588001E1832A00950E876B85589726EF3EDFE0E4C16B4F8EB0ECDE8A23F3F9E839831CE316170D2000858080178162BF959EDACD55B2CD3721A1EDFE064C1AEC1B3F02442FEC92E119DFAF82D6EC3884002C0004A9FEDD617613A307F791C6D74FB1A27C451F6139305AD394982D582367260B5A600","originIp":"172.18.0.1"},"payload":{"dataType":"us.dot.its.jpo.ode.plugin.j2735.travelerinformation.TravelerInformation","data":{"msgCnt":82,"timeStamp":345337,"packetID":"4F4354455420535452","urlB":"IA5St","dataFrames":[{"notUsed":29,"frameType":"commercialSignage","msgId":{"furtherInfoID":"4F43"},"startYear":425,"startTime":306216,"durationTime":31001,"priority":2,"notUsed1":1,"regions":[{"name":"IA5","id":{"region":38149,"id":48118},"anchor":{"lat":-567387419,"elevation":53848,"long":-1717691068},"laneWidth":15175,"directionality":"unavailable","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":true,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"oldRegion":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":true,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useFor50000meters","area":{"circle":{"center":{"lat":-686654332,"elevation":38736,"long":1616508908},"radius":3832,"units":"centimeter"}}}}},{"name":"I","id":{"region":64573,"id":33281},"anchor":{"lat":-714161321,"elevation":48475,"long":-1285139143},"laneWidth":26805,"directionality":"unavailable","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":true,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"path":{"scale":1,"offset":{"ll":{"nodes":[{"delta":{"node-LL4":{"lon":-127947,"lat":-120550}},"attributes":{"localNode":["downstreamStopLine","closedToTraffic"],"disabled":["adjacentParkingOnLeft","transitStopOnLeft","parallelParking","mergingLaneLeft","curbOnLeft"],"enabled":["midBlockCurbPresent","transitStopInLane","taperToCenterLine","lowCurbsPresent"],"data":[{"pathEndPointAngle":-8,"laneCrownPointLeft":35,"laneAngle":62,"speedLimits":[{"type":"truckMaxSpeed","speed":5822},{"type":"truckNightMaxSpeed","speed":3017}]}],"dWidth":162,"dElevation":424}},{"delta":{"node-LatLon":{"lon":-998896073,"lat":735850714}},"attributes":{"localNode":["hydrantPresent","safeIsland","closedToTraffic","stopLine","reserved"],"disabled":["loadingzoneOnRight","adjacentParkingOnRight","headInParking"],"enabled":["costToPark","mergingLaneLeft","midBlockCurbPresent","unEvenPavementPresent","curbOnLeft"],"data":[{"laneAngle":-82,"speedLimits":[{"type":"truckMinSpeed","speed":2097}]}],"dWidth":264,"dElevation":-269}},{"delta":{"node-LL4":{"lon":86161,"lat":20207}},"attributes":{"localNode":["roundedCapStyleA","divergePoint","roundedCapStyleB","reserved"],"disabled":["adjacentParkingOnLeft","adjacentBikeLaneOnRight"],"enabled":["headInParking","timeRestrictionsOnParking"],"data":[{"laneCrownPointCenter":-68}],"dWidth":245,"dElevation":247}},{"delta":{"node-LL1":{"lon":-172,"lat":525}},"attributes":{"localNode":["closedToTraffic","roundedCapStyleA"],"disabled":["partialCurbIntrusion"],"enabled":["adaptiveTimingPresent"],"dWidth":206,"dElevation":144}},{"delta":{"node-LL5":{"lon":-873243,"lat":1464496}},"attributes":{"localNode":["stopLine","downstreamStartNode"],"disabled":["taperToRight","doNotBlock"],"enabled":["bikeBoxInFront"],"data":[{"pathEndPointAngle":25,"laneAngle":137}],"dWidth":414,"dElevation":181}}]}}}}},{"name":"IA5","id":{"region":7296,"id":1154},"anchor":{"lat":29950376,"elevation":16367,"long":270580409},"laneWidth":4926,"directionality":"unavailable","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":true,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"geometry":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":true,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useFor10000meters","laneWidth":26482,"circle":{"center":{"lat":598135630,"elevation":32186,"long":664850545},"radius":3930,"units":"mile"}}}},{"name":"IA5S","id":{"region":1582,"id":46417},"anchor":{"lat":-283655839,"elevation":57976,"long":-685153664},"laneWidth":7235,"directionality":"forward","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":true,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"oldRegion":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":true,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useFor1000meters","area":{"shapePointSet":{"anchor":{"lat":581272185,"elevation":9059,"long":1108489970},"laneWidth":20085,"directionality":"forward","nodeList":{"nodes":[{"delta":{"node-LatLon":{"lon":-605370079,"lat":829743521}},"attributes":{"localNode":["mergePoint","reserved"],"disabled":["turnOutPointOnRight","adjacentParkingOnLeft","freeParking","costToPark"],"enabled":["costToPark","adjacentParkingOnRight"],"data":[{"laneCrownPointRight":4,"laneAngle":-167}],"dWidth":144,"dElevation":239}},{"delta":{"node-LatLon":{"lon":-605370079,"lat":829743521}},"attributes":{"localNode":["hydrantPresent","divergePoint"],"disabled":["freeParking","unEvenPavementPresent"],"enabled":["freeParking","adaptiveTimingPresent","taperToLeft"],"data":[{"speedLimits":[{"type":"vehiclesWithTrailersMaxSpeed","speed":3517}]}],"dWidth":-36,"dElevation":-453}},{"delta":{"node-LatLon":{"lon":-605370079,"lat":829743521}},"attributes":{"localNode":["roundedCapStyleA","downstreamStopLine","mergePoint","hydrantPresent"],"disabled":["doNotBlock","whiteLine","bikeBoxInFront","sharedBikeLane"],"enabled":["bikeBoxInFront","transitStopInLane","unEvenPavementPresent","adjacentBikeLaneOnRight"],"data":[{"pathEndPointAngle":-95,"laneAngle":60}],"dWidth":463,"dElevation":57}}]}}}}}},{"name":"IA5","id":{"region":11251,"id":41890},"anchor":{"lat":385181606,"elevation":46812,"long":1670812734},"laneWidth":16153,"directionality":"unavailable","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":true,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"geometry":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":true,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useInstantlyOnly","laneWidth":6004,"circle":{"center":{"lat":-509239964,"elevation":9413,"long":772185922},"radius":1224,"units":"cm2-5"}}}}],"notUsed2":15,"notUsed3":9,"content":{"exitService":[{"item":{"itis":599}}]},"url":"IA5S"},{"notUsed":11,"frameType":"commercialSignage","msgId":{"roadSignID":{"position":{"lat":634998835,"elevation":50308,"long":313588249},"viewAngle":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":true,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"mutcdCode":"maintenance","crc":"4F43"}},"startYear":3481,"startTime":305174,"durationTime":24752,"priority":5,"notUsed1":10,"regions":[{"name":"I","id":{"region":44107,"id":63537},"anchor":{"lat":-419185997,"elevation":51107,"long":-533287210},"laneWidth":25278,"directionality":"reverse","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":true,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"path":{"scale":8,"offset":{"ll":{"nodes":[{"delta":{"node-LatLon":{"lon":900792217,"lat":448269129}},"attributes":{"localNode":["roundedCapStyleA","roundedCapStyleB","downstreamStartNode","divergePoint"],"disabled":["timeRestrictionsOnParking","sharedWithTrackedVehicle"],"enabled":["taperToCenterLine"],"data":[{"pathEndPointAngle":24,"laneCrownPointCenter":9}],"dWidth":225,"dElevation":-213}},{"delta":{"node-LatLon":{"lon":900792217,"lat":448269129}},"attributes":{"localNode":["stopLine","mergePoint"],"disabled":["rfSignalRequestPresent"],"enabled":["turnOutPointOnLeft","loadingzoneOnLeft","headInParking","adjacentParkingOnRight","safeIsland"],"data":[{"pathEndPointAngle":-109,"laneCrownPointRight":83}],"dWidth":-31,"dElevation":-482}},{"delta":{"node-LL1":{"lon":-1370,"lat":-1581}},"attributes":{"localNode":["mergePoint","divergePoint","downstreamStartNode","safeIsland"],"disabled":["adaptiveTimingPresent","partialCurbIntrusion","parallelParking","curbOnLeft","doNotBlock"],"enabled":["curbOnRight","sharedBikeLane"],"data":[{"laneCrownPointLeft":-121}],"dWidth":505,"dElevation":348}}]}}}}},{"name":"IA","id":{"region":30031,"id":322},"anchor":{"lat":-454547095,"elevation":59458,"long":353479827},"laneWidth":23566,"directionality":"unavailable","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":true,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"geometry":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":true,"from337-5to360-0degrees":false},"extent":"useFor10meters","laneWidth":24321,"circle":{"center":{"lat":-539150408,"elevation":45059,"long":-814772254},"radius":1157,"units":"mile"}}}},{"name":"IA5St","id":{"region":46088,"id":60227},"anchor":{"lat":-476956537,"elevation":4505,"long":759386724},"laneWidth":28846,"directionality":"forward","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":true,"from337-5to360-0degrees":false},"description":{"geometry":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":true,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useFor100meters","laneWidth":8084,"circle":{"center":{"lat":-405703383,"elevation":9512,"long":-508985739},"radius":2519,"units":"mile"}}}}],"notUsed2":11,"notUsed3":23,"content":{"exitService":[{"item":{"text":"I"}},{"item":{"text":"IA5St"}},{"item":{"text":"IA5"}}]},"url":"IA5St"},{"notUsed":13,"frameType":"unknown","msgId":{"furtherInfoID":"4F43"},"startYear":2776,"startTime":408571,"durationTime":15957,"priority":5,"notUsed1":6,"regions":[{"name":"IA","id":{"region":62756,"id":63693},"anchor":{"lat":424936826,"elevation":35858,"long":-1208779998},"laneWidth":18563,"directionality":"both","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":true,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"geometry":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":true,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useFor5000meters","laneWidth":17158,"circle":{"center":{"lat":442482548,"elevation":43319,"long":-804103995},"radius":1951,"units":"meter"}}}},{"name":"IA5S","id":{"region":51032,"id":30319},"anchor":{"lat":-559743245,"elevation":46636,"long":1697199162},"laneWidth":5901,"directionality":"unavailable","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":true,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"geometry":{"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":true,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useFor500meters","laneWidth":28716,"circle":{"center":{"lat":707126893,"elevation":35728,"long":-77527193},"radius":3343,"units":"meter"}}}},{"name":"IA","id":{"region":23939,"id":26592},"anchor":{"lat":-328004279,"elevation":45419,"long":88284632},"laneWidth":15118,"directionality":"unavailable","closedPath":true,"direction":{"from000-0to022-5degrees":false,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":true,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"description":{"oldRegion":{"direction":{"from000-0to022-5degrees":true,"from022-5to045-0degrees":false,"from045-0to067-5degrees":false,"from067-5to090-0degrees":false,"from090-0to112-5degrees":false,"from112-5to135-0degrees":false,"from135-0to157-5degrees":false,"from157-5to180-0degrees":false,"from180-0to202-5degrees":false,"from202-5to225-0degrees":false,"from225-0to247-5degrees":false,"from247-5to270-0degrees":false,"from270-0to292-5degrees":false,"from292-5to315-0degrees":false,"from315-0to337-5degrees":false,"from337-5to360-0degrees":false},"extent":"useFor50000meters","area":{"circle":{"center":{"lat":171361070,"elevation":57912,"long":1462406911},"radius":3502,"units":"kilometer"}}}}}],"notUsed2":31,"notUsed3":12,"content":{"speedLimit":[{"item":{"itis":40721}},{"item":{"itis":36784}},{"item":{"text":"IA5S"}},{"item":{"text":"IA5"}},{"item":{"itis":49435}}]},"url":"IA5S"}]}}}
\ No newline at end of file
diff --git a/jpo-ode-plugins/pom.xml b/jpo-ode-plugins/pom.xml
index 50b5281d1..68716dae1 100644
--- a/jpo-ode-plugins/pom.xml
+++ b/jpo-ode-plugins/pom.xml
@@ -45,5 +45,8 @@
logback-core
1.4.14
+
+
+
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/Asn1ParameterizedTypes.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/Asn1ParameterizedTypes.java
new file mode 100644
index 000000000..a877ec076
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/Asn1ParameterizedTypes.java
@@ -0,0 +1,86 @@
+package us.dot.its.jpo.ode.plugin.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation to specify how to deserialize an ASN1 parameterized type, which
+ * is represented by an abstract generic class in Java. Modeled after the
+ * JsonTypeInfo and
+ * JsonSubTypes annotations in Jackson, but adding the ability to specify that
+ * the
+ * id field is an integer, not restricted to being a string like in Jackson.
+ *
+ * @author Ivan Yourshaw
+ */
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Asn1ParameterizedTypes {
+
+ /**
+ * Id property.
+ *
+ * @return Name of the property used to determine which type to deserialize
+ */
+ String idProperty();
+
+ /**
+ * Type id property.
+ *
+ * @return Type of the id property, which may be integer or string
+ */
+ IdType idType();
+
+ /**
+ * Name of the value property.
+ *
+ * @return Name of the value property containing the payload which can be
+ * various types
+ * depending on the generic type parameters.
+ */
+ String valueProperty();
+
+ /**
+ * Value property.
+ *
+ * @return Array of value types mapped to ids.
+ */
+ Type[] value();
+
+ /**
+ * Id type enumeration.
+ */
+ enum IdType {
+ INTEGER,
+ STRING
+ }
+
+ /**
+ * Annotation to specify the type corresponding to an id.
+ */
+ @interface Type {
+ /**
+ * Int id property.
+ *
+ * @return The id if it is an integer
+ */
+ int intId() default -1;
+
+ /**
+ * String id property.
+ *
+ * @return The id if it is a string
+ */
+ String stringId() default "";
+
+ /**
+ * Class value property.
+ *
+ * @return The specific class to deserialize to
+ */
+ Class> value();
+ }
+
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/Asn1Property.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/Asn1Property.java
new file mode 100644
index 000000000..666434f8f
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/Asn1Property.java
@@ -0,0 +1,64 @@
+package us.dot.its.jpo.ode.plugin.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Provides metadata for a property of an Asn.1 class: components of
+ * Asn1Sequence, or alternatives of Asn1Choice.
+ *
+ * @author Ivan Yourshaw
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface Asn1Property {
+ /**
+ * Tag number property.
+ *
+ * @return Tag number indicating the canonical order of serialization
+ */
+ int tag();
+
+ /**
+ * Name property.
+ *
+ * @return Name of the original non-normalized property. Not required if the
+ * Java property name is the same as
+ * the ASN.1 name.
+ */
+ String name() default "";
+
+ /**
+ * Extensions present property.
+ *
+ * @return True if the property is an extension, false if part of the root
+ */
+ boolean extension() default false;
+
+ /**
+ * Optional field property.
+ *
+ * @return True if the ASN.1 OPTIONAL marker is present
+ */
+ boolean optional() default false;
+
+ /**
+ * Default value property.
+ *
+ * @return Default value specified by the ASN.1 DEFAULT marker. String can be
+ * converted to an integer for int types.
+ */
+ String defaultValue() default "";
+
+ /**
+ * Open type property.
+ *
+ * @return Indicates that the property is an ASN1 Open Type, so UPER encoding
+ * needs to use a length determinant
+ * as described in T-REC-X.691 (2021/2) section 11.2.
+ */
+ boolean openType() default false;
+
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/package-info.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/package-info.java
new file mode 100644
index 000000000..90d4dfd11
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/annotations/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Annotations for ASN.1 types
+ */
+package us.dot.its.jpo.ode.plugin.annotations;
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735ComputedLane.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735ComputedLane.java
index 59f073f6f..b4d55ca59 100644
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735ComputedLane.java
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735ComputedLane.java
@@ -5,9 +5,9 @@
public class J2735ComputedLane extends Asn1Object {
private static final long serialVersionUID = 1L;
- private Integer referenceLaneId;
- private Integer offsetXaxis; // could have an object with min and max inside of it
- private Integer offsetYaxis; // could have an object with min and max inside of it
+ private Integer referenceLaneId;
+ private Integer offsetXaxis;
+ private Integer offsetYaxis;
private Integer rotateXY;
private Integer scaleXaxis;
private Integer scaleYaxis;
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735DirectionOfUse.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735DirectionOfUse.java
deleted file mode 100644
index c343ca295..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735DirectionOfUse.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright 2018 572682
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy
- * of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- ******************************************************************************/
-package us.dot.its.jpo.ode.plugin.j2735;
-
-public enum J2735DirectionOfUse {
- FORWARD,
- REVERSE,
- BOTH
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735LaneDataAttribute.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735LaneDataAttribute.java
index 5a33a4440..f1614f7cc 100644
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735LaneDataAttribute.java
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735LaneDataAttribute.java
@@ -7,50 +7,50 @@ public class J2735LaneDataAttribute extends Asn1Object {
*
*/
private static final long serialVersionUID = 1L;
- private Integer pathEndPointAngle;
- private Integer laneCrownPointCenter;
- private Integer laneCrownPointLeft;
- private Integer laneCrownPointRight;
- private Integer laneAngle;
+ private int pathEndPointAngle;
+ private int laneCrownPointCenter;
+ private int laneCrownPointLeft;
+ private int laneCrownPointRight;
+ private int laneAngle;
private J2735SpeedLimitList speedLimits;
- public Integer getPathEndPointAngle() {
+ public int getPathEndPointAngle() {
return pathEndPointAngle;
}
- public void setPathEndPointAngle(Integer pathEndPointAngle) {
+ public void setPathEndPointAngle(int pathEndPointAngle) {
this.pathEndPointAngle = pathEndPointAngle;
}
- public Integer getLaneCrownPointCenter() {
+ public int getLaneCrownPointCenter() {
return laneCrownPointCenter;
}
- public void setLaneCrownPointCenter(Integer laneCrownPointCenter) {
+ public void setLaneCrownPointCenter(int laneCrownPointCenter) {
this.laneCrownPointCenter = laneCrownPointCenter;
}
- public Integer getLaneCrownPointLeft() {
+ public int getLaneCrownPointLeft() {
return laneCrownPointLeft;
}
- public void setLaneCrownPointLeft(Integer laneCrownPointLeft) {
+ public void setLaneCrownPointLeft(int laneCrownPointLeft) {
this.laneCrownPointLeft = laneCrownPointLeft;
}
- public Integer getLaneCrownPointRight() {
+ public int getLaneCrownPointRight() {
return laneCrownPointRight;
}
- public void setLaneCrownPointRight(Integer laneCrownPointRight) {
+ public void setLaneCrownPointRight(int laneCrownPointRight) {
this.laneCrownPointRight = laneCrownPointRight;
}
- public Integer getLaneAngle() {
+ public int getLaneAngle() {
return laneAngle;
}
- public void setLaneAngle(Integer laneAngle) {
+ public void setLaneAngle(int laneAngle) {
this.laneAngle = laneAngle;
}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735LaneDataAttributeList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735LaneDataAttributeList.java
deleted file mode 100644
index 130ad4809..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735LaneDataAttributeList.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
-
-public class J2735LaneDataAttributeList extends Asn1Object {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private List localNode = new ArrayList<>();
-
- public List getLocalNode() {
- return localNode;
- }
-
- public void setLocalNode(List localNode) {
- this.localNode = localNode;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735MsgId.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735MsgId.java
new file mode 100644
index 000000000..1b729cee5
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735MsgId.java
@@ -0,0 +1,26 @@
+package us.dot.its.jpo.ode.plugin.j2735;
+
+import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
+
+public class J2735MsgId extends Asn1Object {
+ private static final long serialVersionUID = 1L;
+
+ private String furtherInfoID;
+ private J2735RoadSignId roadSignID;
+
+ public String getFurtherInfoId() {
+ return furtherInfoID;
+ }
+
+ public void setFurtherInfoId(String furtherInfoID) {
+ this.furtherInfoID = furtherInfoID;
+ }
+
+ public J2735RoadSignId getRoadSignID() {
+ return roadSignID;
+ }
+
+ public void setRoadSignID(J2735RoadSignId roadSignID) {
+ this.roadSignID = roadSignID;
+ }
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735MutcdCode.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735MutcdCode.java
new file mode 100644
index 000000000..744f1aa36
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735MutcdCode.java
@@ -0,0 +1,11 @@
+package us.dot.its.jpo.ode.plugin.j2735;
+
+public enum J2735MutcdCode {
+ none,
+ regulatory,
+ warning,
+ maintenance,
+ motoristService,
+ guide,
+ rec,
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeSet.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeSet.java
new file mode 100644
index 000000000..3b0493ef8
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeSet.java
@@ -0,0 +1,63 @@
+package us.dot.its.jpo.ode.plugin.j2735;
+
+import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
+
+public class J2735NodeAttributeSet extends Asn1Object {
+ private static final long serialVersionUID = 1L;
+
+ private J2735NodeAttribute[] localNode;
+ private J2735SegmentAttribute[] disabled;
+ private J2735SegmentAttribute[] enabled;
+ private J2735LaneDataAttribute[] data;
+ private Integer dWidth;
+ private Integer dElevation;
+
+ public J2735NodeAttribute[] getLocalNode() {
+ return localNode;
+ }
+
+ public void setLocalNode(J2735NodeAttribute[] localNode) {
+ this.localNode = localNode;
+ }
+
+ public J2735SegmentAttribute[] getDisabled() {
+ return disabled;
+ }
+
+ public void setDisabled(J2735SegmentAttribute[] disabled) {
+ this.disabled = disabled;
+ }
+
+ public J2735SegmentAttribute[] getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(J2735SegmentAttribute[] enabled) {
+ this.enabled = enabled;
+ }
+
+ public J2735LaneDataAttribute[] getData() {
+ return data;
+ }
+
+ public void setData(J2735LaneDataAttribute[] data) {
+ this.data = data;
+ }
+
+ public Integer getdWidth() {
+ return dWidth;
+ }
+
+ public void setdWidth(Integer dWidth) {
+ this.dWidth = dWidth;
+ }
+
+ public Integer getdElevation() {
+ return dElevation;
+ }
+
+ public void setdElevation(Integer dElevation) {
+ this.dElevation = dElevation;
+ }
+
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeSetXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeSetXY.java
deleted file mode 100644
index 7c8ef06dd..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeSetXY.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735;
-
-import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
-
-public class J2735NodeAttributeSetXY extends Asn1Object {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private J2735NodeAttributeXYList localNode;
- private J2735SegmentAttributeXYList disabled;
- private J2735SegmentAttributeXYList enabled;
- private J2735LaneDataAttributeList data;
- private Integer dWidth;
- private Integer dElevation;
-
- public J2735NodeAttributeXYList getLocalNode() {
- return localNode;
- }
-
- public void setLocalNode(J2735NodeAttributeXYList localNode) {
- this.localNode = localNode;
- }
-
- public J2735SegmentAttributeXYList getDisabled() {
- return disabled;
- }
-
- public void setDisabled(J2735SegmentAttributeXYList disabled) {
- this.disabled = disabled;
- }
-
- public J2735SegmentAttributeXYList getEnabled() {
- return enabled;
- }
-
- public void setEnabled(J2735SegmentAttributeXYList enabled) {
- this.enabled = enabled;
- }
-
- public J2735LaneDataAttributeList getData() {
- return data;
- }
-
- public void setData(J2735LaneDataAttributeList data) {
- this.data = data;
- }
-
- public Integer getdWidth() {
- return dWidth;
- }
-
- public void setdWidth(Integer dWidth) {
- this.dWidth = dWidth;
- }
-
- public Integer getdElevation() {
- return dElevation;
- }
-
- public void setdElevation(Integer dElevation) {
- this.dElevation = dElevation;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeXY.java
deleted file mode 100644
index f584e05a9..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeXY.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735;
-
-import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
-
-public class J2735NodeAttributeXY extends Asn1Object {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private J2735NodeAttribute nodeAttrList;
-
- public J2735NodeAttribute getNodeAttrList() {
- return nodeAttrList;
- }
-
- public void setNodeAttrList(J2735NodeAttribute nodeAttrList) {
- this.nodeAttrList = nodeAttrList;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeXYList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeXYList.java
deleted file mode 100644
index ab5e46e8f..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeAttributeXYList.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
-
-public class J2735NodeAttributeXYList extends Asn1Object {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private List localNode = new ArrayList<>();
-
- public List getLocalNode() {
- return localNode;
- }
-
- public void setLocalNode(List localNode) {
- this.localNode = localNode;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeListXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeListXY.java
index 9be72df3d..5d3d493d0 100644
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeListXY.java
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeListXY.java
@@ -1,7 +1,5 @@
package us.dot.its.jpo.ode.plugin.j2735;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
public class J2735NodeListXY extends Asn1Object {
@@ -9,16 +7,15 @@ public class J2735NodeListXY extends Asn1Object {
*
*/
private static final long serialVersionUID = 1L;
- private J2735NodeSetXY nodes;
+ private J2735NodeXY[] nodes;
private J2735ComputedLane computed;
- @JsonProperty("nodes")
- public J2735NodeSetXY getNodes() {
+ public J2735NodeXY[] getNodes() {
return nodes;
}
- public void setNodes(J2735NodeSetXY nodeList) {
- this.nodes = nodeList;
+ public void setNodes(J2735NodeXY[] nodes) {
+ this.nodes = nodes;
}
public J2735ComputedLane getComputed() {
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeSetXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeSetXY.java
deleted file mode 100644
index 536814d54..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeSetXY.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
-
-public class J2735NodeSetXY extends Asn1Object {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private List NodeXY = new ArrayList<>();
-
- @JsonProperty("NodeXY")
- public List getNodes() {
- return NodeXY;
- }
- public void setNodes(List NodeXY) {
- this.NodeXY = NodeXY;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeXY.java
index 1de3ef308..4f03460ec 100644
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeXY.java
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735NodeXY.java
@@ -3,23 +3,24 @@
import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
public class J2735NodeXY extends Asn1Object {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private J2735NodeOffsetPointXY delta ;
- private J2735NodeAttributeSetXY attributes ;
- public J2735NodeOffsetPointXY getDelta() {
- return delta;
- }
- public void setDelta(J2735NodeOffsetPointXY delta) {
- this.delta = delta;
- }
- public J2735NodeAttributeSetXY getAttributes() {
- return attributes;
- }
- public void setAttributes(J2735NodeAttributeSetXY attributes) {
- this.attributes = attributes;
- }
-
+ private static final long serialVersionUID = 1L;
+
+ private J2735NodeOffsetPointXY delta;
+ private J2735NodeAttributeSet attributes;
+
+ public J2735NodeOffsetPointXY getDelta() {
+ return delta;
+ }
+
+ public void setDelta(J2735NodeOffsetPointXY delta) {
+ this.delta = delta;
+ }
+
+ public J2735NodeAttributeSet getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(J2735NodeAttributeSet attributes) {
+ this.attributes = attributes;
+ }
}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735RoadSignId.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735RoadSignId.java
new file mode 100644
index 000000000..c45059b70
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735RoadSignId.java
@@ -0,0 +1,42 @@
+package us.dot.its.jpo.ode.plugin.j2735;
+
+import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
+
+public class J2735RoadSignId extends Asn1Object {
+ private OdePosition3D position;
+ private String viewAngle;
+ private J2735MutcdCode mutcdCode;
+ private String crc;
+
+ public OdePosition3D getPosition() {
+ return position;
+ }
+
+ public void setPosition(OdePosition3D position) {
+ this.position = position;
+ }
+
+ public String getViewAngle() {
+ return viewAngle;
+ }
+
+ public void setViewAngle(String viewAngle) {
+ this.viewAngle = viewAngle;
+ }
+
+ public J2735MutcdCode getMutcdCode() {
+ return mutcdCode;
+ }
+
+ public void setMutcdCode(J2735MutcdCode mutcdCode) {
+ this.mutcdCode = mutcdCode;
+ }
+
+ public String getCrc() {
+ return crc;
+ }
+
+ public void setCrc(String crc) {
+ this.crc = crc;
+ }
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttributeXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttribute.java
similarity index 97%
rename from jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttributeXY.java
rename to jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttribute.java
index dd8b41e92..6c6319f1f 100644
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttributeXY.java
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttribute.java
@@ -1,6 +1,6 @@
package us.dot.its.jpo.ode.plugin.j2735;
-public enum J2735SegmentAttributeXY {
+public enum J2735SegmentAttribute {
reserved ,
doNotBlock ,
whiteLine ,
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttributeXYList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttributeXYList.java
deleted file mode 100644
index eb4cbd207..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/J2735SegmentAttributeXYList.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
-
-public class J2735SegmentAttributeXYList extends Asn1Object {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private List segAttrList = new ArrayList<>();
-
- public List getSegAttrList() {
- return segAttrList;
- }
-
- public void setSegAttrList(List segAttrList) {
- this.segAttrList = segAttrList;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/DegreesLat.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/DegreesLat.java
new file mode 100644
index 000000000..4c66201d8
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/DegreesLat.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = DegreesLat.DegreesLatDeserializer.class)
+public class DegreesLat extends Asn1Integer {
+
+ public DegreesLat() {
+ super(-90L, 90L);
+ }
+
+ @JsonCreator
+ public DegreesLat(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class DegreesLatDeserializer extends IntegerDeserializer {
+ public DegreesLatDeserializer() {
+ super(DegreesLat.class);
+ }
+
+ @Override
+ protected DegreesLat construct() {
+ return new DegreesLat();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/DegreesLong.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/DegreesLong.java
new file mode 100644
index 000000000..806a15a72
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/DegreesLong.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = DegreesLong.DegreesLongDeserializer.class)
+public class DegreesLong extends Asn1Integer {
+
+ public DegreesLong() {
+ super(-180L, 180L);
+ }
+
+ @JsonCreator
+ public DegreesLong(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class DegreesLongDeserializer extends IntegerDeserializer {
+ public DegreesLongDeserializer() {
+ super(DegreesLong.class);
+ }
+
+ @Override
+ protected DegreesLong construct() {
+ return new DegreesLong();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Elevation.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Elevation.java
new file mode 100644
index 000000000..9b27d5a6d
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Elevation.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Elevation.ElevationDeserializer.class)
+public class Elevation extends Asn1Integer {
+
+ public Elevation() {
+ super(-32768L, 32767L);
+ }
+
+ @JsonCreator
+ public Elevation(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class ElevationDeserializer extends IntegerDeserializer {
+ public ElevationDeserializer() {
+ super(Elevation.class);
+ }
+
+ @Override
+ protected Elevation construct() {
+ return new Elevation();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpB.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpB.java
new file mode 100644
index 000000000..139ba44bb
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpB.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class LaneDataAttribute_addGrpB extends Asn1Sequence {
+
+ LaneDataAttribute_addGrpB() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttribute.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttribute.java
new file mode 100644
index 000000000..21b1949a6
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttribute.java
@@ -0,0 +1,48 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonRootName;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_LaneDataAttribute;
+
+@JsonRootName("Reg_LaneDataAttribute")
+public class LaneDataAttribute_addGrpBReg_LaneDataAttribute extends Reg_LaneDataAttribute {
+
+ public LaneDataAttribute_addGrpBReg_LaneDataAttribute() {
+ super(2, "LaneDataAttribute_addGrpB");
+ }
+
+ @Override
+ @JsonSerialize(using = LaneDataAttribute_addGrpBReg_LaneDataAttributeValueSerializer.class)
+ public LaneDataAttribute_addGrpB getRegExtValue() {
+ return super.getRegExtValue();
+ }
+
+ @Override
+ @JsonDeserialize(using = LaneDataAttribute_addGrpBReg_LaneDataAttributeValueDeserializer.class)
+ public void setRegExtValue(LaneDataAttribute_addGrpB value) {
+ super.setRegExtValue(value);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttributeValueDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttributeValueDeserializer.java
new file mode 100644
index 000000000..190be26c6
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttributeValueDeserializer.java
@@ -0,0 +1,34 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeDeserializer;
+
+public class LaneDataAttribute_addGrpBReg_LaneDataAttributeValueDeserializer
+ extends
+ OpenTypeDeserializer {
+
+ public LaneDataAttribute_addGrpBReg_LaneDataAttributeValueDeserializer() {
+ super(LaneDataAttribute_addGrpB.class, "LaneDataAttribute_addGrpB");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttributeValueSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttributeValueSerializer.java
new file mode 100644
index 000000000..0c965b5d7
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LaneDataAttribute_addGrpBReg_LaneDataAttributeValueSerializer.java
@@ -0,0 +1,34 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeSerializer;
+
+public class LaneDataAttribute_addGrpBReg_LaneDataAttributeValueSerializer
+ extends
+ OpenTypeSerializer {
+
+ public LaneDataAttribute_addGrpBReg_LaneDataAttributeValueSerializer() {
+ super(LaneDataAttribute_addGrpB.class, "regExtValue", "LaneDataAttribute_addGrpB");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LatitudeDMS.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LatitudeDMS.java
new file mode 100644
index 000000000..7d22d8885
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LatitudeDMS.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = LatitudeDMS.LatitudeDMSDeserializer.class)
+public class LatitudeDMS extends Asn1Integer {
+
+ public LatitudeDMS() {
+ super(-32400000L, 32400000L);
+ }
+
+ @JsonCreator
+ public LatitudeDMS(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class LatitudeDMSDeserializer extends IntegerDeserializer {
+ public LatitudeDMSDeserializer() {
+ super(LatitudeDMS.class);
+ }
+
+ @Override
+ protected LatitudeDMS construct() {
+ return new LatitudeDMS();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LatitudeDMS2.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LatitudeDMS2.java
new file mode 100644
index 000000000..87f3ece8a
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LatitudeDMS2.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class LatitudeDMS2 extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "d")
+ @JsonProperty("d")
+ private DegreesLat d;
+ @Asn1Property(tag = 1, name = "m")
+ @JsonProperty("m")
+ private MinutesAngle m;
+ @Asn1Property(tag = 2, name = "s")
+ @JsonProperty("s")
+ private SecondsAngle s;
+
+ LatitudeDMS2() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LongitudeDMS.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LongitudeDMS.java
new file mode 100644
index 000000000..446d42a29
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LongitudeDMS.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = LongitudeDMS.LongitudeDMSDeserializer.class)
+public class LongitudeDMS extends Asn1Integer {
+
+ public LongitudeDMS() {
+ super(-64800000L, 64800000L);
+ }
+
+ @JsonCreator
+ public LongitudeDMS(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class LongitudeDMSDeserializer extends IntegerDeserializer {
+ public LongitudeDMSDeserializer() {
+ super(LongitudeDMS.class);
+ }
+
+ @Override
+ protected LongitudeDMS construct() {
+ return new LongitudeDMS();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LongitudeDMS2.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LongitudeDMS2.java
new file mode 100644
index 000000000..0910002ee
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/LongitudeDMS2.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class LongitudeDMS2 extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "d")
+ @JsonProperty("d")
+ private DegreesLong d;
+ @Asn1Property(tag = 1, name = "m")
+ @JsonProperty("m")
+ private MinutesAngle m;
+ @Asn1Property(tag = 2, name = "s")
+ @JsonProperty("s")
+ private SecondsAngle s;
+
+ LongitudeDMS2() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/MinutesAngle.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/MinutesAngle.java
new file mode 100644
index 000000000..64185accd
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/MinutesAngle.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = MinutesAngle.MinutesAngleDeserializer.class)
+public class MinutesAngle extends Asn1Integer {
+
+ public MinutesAngle() {
+ super(0L, 59L);
+ }
+
+ @JsonCreator
+ public MinutesAngle(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class MinutesAngleDeserializer extends IntegerDeserializer {
+ public MinutesAngleDeserializer() {
+ super(MinutesAngle.class);
+ }
+
+ @Override
+ protected MinutesAngle construct() {
+ return new MinutesAngle();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpB.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpB.java
new file mode 100644
index 000000000..6f95a8624
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpB.java
@@ -0,0 +1,48 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+
+@Getter
+@Setter
+@JsonInclude(Include.NON_NULL)
+public class NodeOffsetPointXY_addGrpB extends Asn1Choice {
+
+ @Asn1Property(tag = 0, name = "posA")
+ @JsonProperty("posA")
+ private Node_LLdms_48b posA;
+ @Asn1Property(tag = 1, name = "posB")
+ @JsonProperty("posB")
+ private Node_LLdms_80b posB;
+
+ NodeOffsetPointXY_addGrpB() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY.java
new file mode 100644
index 000000000..f0761bbe0
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY.java
@@ -0,0 +1,48 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonRootName;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_NodeOffsetPointXY;
+
+@JsonRootName("Reg_NodeOffsetPointXY")
+public class NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY extends Reg_NodeOffsetPointXY {
+
+ public NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY() {
+ super(2, "NodeOffsetPointXY_addGrpB");
+ }
+
+ @Override
+ @JsonSerialize(using = NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueSerializer.class)
+ public NodeOffsetPointXY_addGrpB getRegExtValue() {
+ return super.getRegExtValue();
+ }
+
+ @Override
+ @JsonDeserialize(using = NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueDeserializer.class)
+ public void setRegExtValue(NodeOffsetPointXY_addGrpB value) {
+ super.setRegExtValue(value);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueDeserializer.java
new file mode 100644
index 000000000..ff088be19
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueDeserializer.java
@@ -0,0 +1,34 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeDeserializer;
+
+public class NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueDeserializer
+ extends
+ OpenTypeDeserializer {
+
+ public NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueDeserializer() {
+ super(NodeOffsetPointXY_addGrpB.class, "NodeOffsetPointXY_addGrpB");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueSerializer.java
new file mode 100644
index 000000000..7badc4375
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueSerializer.java
@@ -0,0 +1,34 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeSerializer;
+
+public class NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueSerializer
+ extends
+ OpenTypeSerializer {
+
+ public NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXYValueSerializer() {
+ super(NodeOffsetPointXY_addGrpB.class, "regExtValue", "NodeOffsetPointXY_addGrpB");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Node_LLdms_48b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Node_LLdms_48b.java
new file mode 100644
index 000000000..148dc3911
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Node_LLdms_48b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LLdms_48b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private LongitudeDMS lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private LatitudeDMS lat;
+
+ Node_LLdms_48b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Node_LLdms_80b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Node_LLdms_80b.java
new file mode 100644
index 000000000..ec3f30e2a
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Node_LLdms_80b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LLdms_80b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private LongitudeDMS2 lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private LatitudeDMS2 lat;
+
+ Node_LLdms_80b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpB.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpB.java
new file mode 100644
index 000000000..4d142da73
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpB.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Position3D_addGrpB extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "latitude")
+ @JsonProperty("latitude")
+ private LatitudeDMS2 latitude;
+ @Asn1Property(tag = 1, name = "longitude")
+ @JsonProperty("longitude")
+ private LongitudeDMS2 longitude;
+ @Asn1Property(tag = 2, name = "elevation")
+ @JsonProperty("elevation")
+ private Elevation elevation;
+
+ Position3D_addGrpB() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3D.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3D.java
new file mode 100644
index 000000000..5835c0fa2
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3D.java
@@ -0,0 +1,48 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonRootName;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_Position3D;
+
+@JsonRootName("Reg_Position3D")
+public class Position3D_addGrpBReg_Position3D extends Reg_Position3D {
+
+ public Position3D_addGrpBReg_Position3D() {
+ super(2, "Position3D_addGrpB");
+ }
+
+ @Override
+ @JsonSerialize(using = Position3D_addGrpBReg_Position3DValueSerializer.class)
+ public Position3D_addGrpB getRegExtValue() {
+ return super.getRegExtValue();
+ }
+
+ @Override
+ @JsonDeserialize(using = Position3D_addGrpBReg_Position3DValueDeserializer.class)
+ public void setRegExtValue(Position3D_addGrpB value) {
+ super.setRegExtValue(value);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3DValueDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3DValueDeserializer.java
new file mode 100644
index 000000000..07b4b9cbb
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3DValueDeserializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeDeserializer;
+
+public class Position3D_addGrpBReg_Position3DValueDeserializer extends OpenTypeDeserializer {
+
+ public Position3D_addGrpBReg_Position3DValueDeserializer() {
+ super(Position3D_addGrpB.class, "Position3D_addGrpB");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3DValueSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3DValueSerializer.java
new file mode 100644
index 000000000..75716ef60
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/Position3D_addGrpBReg_Position3DValueSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeSerializer;
+
+public class Position3D_addGrpBReg_Position3DValueSerializer extends OpenTypeSerializer {
+
+ public Position3D_addGrpBReg_Position3DValueSerializer() {
+ super(Position3D_addGrpB.class, "regExtValue", "Position3D_addGrpB");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/SecondsAngle.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/SecondsAngle.java
new file mode 100644
index 000000000..85e834711
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpb/SecondsAngle.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpb;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = SecondsAngle.SecondsAngleDeserializer.class)
+public class SecondsAngle extends Asn1Integer {
+
+ public SecondsAngle() {
+ super(0L, 5999L);
+ }
+
+ @JsonCreator
+ public SecondsAngle(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class SecondsAngleDeserializer extends IntegerDeserializer {
+ public SecondsAngleDeserializer() {
+ super(SecondsAngle.class);
+ }
+
+ @Override
+ protected SecondsAngle construct() {
+ return new SecondsAngle();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Altitude.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Altitude.java
new file mode 100644
index 000000000..373260db5
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Altitude.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Altitude extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "value")
+ @JsonProperty("value")
+ private AltitudeValue value;
+ @Asn1Property(tag = 1, name = "confidence")
+ @JsonProperty("confidence")
+ private AltitudeConfidence confidence;
+
+ Altitude() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidence.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidence.java
new file mode 100644
index 000000000..e31e49a18
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidence.java
@@ -0,0 +1,56 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = AltitudeConfidenceSerializer.class)
+@JsonDeserialize(using = AltitudeConfidenceDeserializer.class)
+public enum AltitudeConfidence implements Asn1Enumerated {
+ ALT_000_01(0, "alt-000-01"), ALT_000_02(1, "alt-000-02"), ALT_000_05(2, "alt-000-05"), ALT_000_10(3,
+ "alt-000-10"), ALT_000_20(4, "alt-000-20"), ALT_000_50(5, "alt-000-50"), ALT_001_00(6,
+ "alt-001-00"), ALT_002_00(7, "alt-002-00"), ALT_005_00(8, "alt-005-00"), ALT_010_00(9,
+ "alt-010-00"), ALT_020_00(10, "alt-020-00"), ALT_050_00(11, "alt-050-00"), ALT_100_00(12,
+ "alt-100-00"), ALT_200_00(13,
+ "alt-200-00"), OUTOFRANGE(14, "outOfRange"), UNAVAILABLE(15, "unavailable");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private AltitudeConfidence(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 15;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidenceDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidenceDeserializer.java
new file mode 100644
index 000000000..7c2abec91
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidenceDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class AltitudeConfidenceDeserializer extends EnumeratedDeserializer {
+
+ AltitudeConfidenceDeserializer() {
+ super(AltitudeConfidence.class);
+ }
+
+ @Override
+ protected AltitudeConfidence[] listEnumValues() {
+ return AltitudeConfidence.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidenceSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidenceSerializer.java
new file mode 100644
index 000000000..3b61bfe57
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeConfidenceSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class AltitudeConfidenceSerializer extends EnumeratedSerializer {
+
+ AltitudeConfidenceSerializer() {
+ super(AltitudeConfidence.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeValue.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeValue.java
new file mode 100644
index 000000000..a5daab0bc
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/AltitudeValue.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = AltitudeValue.AltitudeValueDeserializer.class)
+public class AltitudeValue extends Asn1Integer {
+
+ public AltitudeValue() {
+ super(-100000L, 800001L);
+ }
+
+ @JsonCreator
+ public AltitudeValue(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class AltitudeValueDeserializer extends IntegerDeserializer {
+ public AltitudeValueDeserializer() {
+ super(AltitudeValue.class);
+ }
+
+ @Override
+ protected AltitudeValue construct() {
+ return new AltitudeValue();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpC.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpC.java
new file mode 100644
index 000000000..95bef32f1
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpC.java
@@ -0,0 +1,47 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Position3D_addGrpC extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "altitude")
+ @JsonProperty("altitude")
+ private Altitude altitude;
+
+ Position3D_addGrpC() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3D.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3D.java
new file mode 100644
index 000000000..c8f51150b
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3D.java
@@ -0,0 +1,48 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import com.fasterxml.jackson.annotation.JsonRootName;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_Position3D;
+
+@JsonRootName("Reg_Position3D")
+public class Position3D_addGrpCReg_Position3D extends Reg_Position3D {
+
+ public Position3D_addGrpCReg_Position3D() {
+ super(3, "Position3D_addGrpC");
+ }
+
+ @Override
+ @JsonSerialize(using = Position3D_addGrpCReg_Position3DValueSerializer.class)
+ public Position3D_addGrpC getRegExtValue() {
+ return super.getRegExtValue();
+ }
+
+ @Override
+ @JsonDeserialize(using = Position3D_addGrpCReg_Position3DValueDeserializer.class)
+ public void setRegExtValue(Position3D_addGrpC value) {
+ super.setRegExtValue(value);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3DValueDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3DValueDeserializer.java
new file mode 100644
index 000000000..63b9c925a
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3DValueDeserializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeDeserializer;
+
+public class Position3D_addGrpCReg_Position3DValueDeserializer extends OpenTypeDeserializer {
+
+ public Position3D_addGrpCReg_Position3DValueDeserializer() {
+ super(Position3D_addGrpC.class, "Position3D_addGrpC");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3DValueSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3DValueSerializer.java
new file mode 100644
index 000000000..089b586f9
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/addgrpc/Position3D_addGrpCReg_Position3DValueSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.addgrpc;
+
+import us.dot.its.jpo.ode.plugin.serialization.OpenTypeSerializer;
+
+public class Position3D_addGrpCReg_Position3DValueSerializer extends OpenTypeSerializer {
+
+ public Position3D_addGrpCReg_Position3DValueSerializer() {
+ super(Position3D_addGrpC.class, "regExtValue", "Position3D_addGrpC");
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/ComputedLaneBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/ComputedLaneBuilder.java
new file mode 100644
index 000000000..d143367f3
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/ComputedLaneBuilder.java
@@ -0,0 +1,55 @@
+package us.dot.its.jpo.ode.plugin.j2735.builders;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import us.dot.its.jpo.ode.plugin.j2735.J2735ComputedLane;
+
+public class ComputedLaneBuilder {
+ private ComputedLaneBuilder() {
+ throw new UnsupportedOperationException();
+ }
+
+ public static J2735ComputedLane genericComputedLane(JsonNode computed) {
+ J2735ComputedLane computedLane = new J2735ComputedLane();
+
+ JsonNode referenceLaneId = computed.get("referenceLaneId");
+ if (referenceLaneId != null) {
+ computedLane.setReferenceLaneId(referenceLaneId.asInt());
+ }
+
+ JsonNode offsetXaxis = computed.get("offsetXaxis");
+ if (offsetXaxis != null) {
+ if (offsetXaxis.get("small") != null) {
+ computedLane.setOffsetXaxis(offsetXaxis.get("small").asInt());
+ } else if (offsetXaxis.get("large") != null) {
+ computedLane.setOffsetXaxis(offsetXaxis.get("large").asInt());
+ }
+ }
+
+ JsonNode offsetYaxis = computed.get("offsetYaxis");
+ if (offsetYaxis != null) {
+ if (offsetYaxis.get("small") != null) {
+ computedLane.setOffsetYaxis(offsetYaxis.get("small").asInt());
+ } else if (offsetYaxis.get("large") != null) {
+ computedLane.setOffsetYaxis(offsetYaxis.get("large").asInt());
+ }
+ }
+
+ JsonNode rotateXY = computed.get("rotateXY");
+ if (rotateXY != null) {
+ computedLane.setRotateXY(rotateXY.asInt());
+ }
+
+ JsonNode scaleXaxis = computed.get("scaleXaxis");
+ if (scaleXaxis != null) {
+ computedLane.setScaleXaxis(scaleXaxis.asInt());
+ }
+
+ JsonNode scaleYaxis = computed.get("scaleYaxis");
+ if (scaleYaxis != null) {
+ computedLane.setScaleYaxis(scaleYaxis.asInt());
+ }
+
+ return computedLane;
+ }
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/ContentBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/ContentBuilder.java
new file mode 100644
index 000000000..1c998705f
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/ContentBuilder.java
@@ -0,0 +1,105 @@
+package us.dot.its.jpo.ode.plugin.j2735.builders;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import us.dot.its.jpo.ode.plugin.j2735.timstorage.Content;
+import us.dot.its.jpo.ode.plugin.j2735.timstorage.ITIS_CodesAndText;
+import us.dot.its.jpo.ode.plugin.j2735.timstorage.Items;
+import us.dot.its.jpo.ode.plugin.j2735.timstorage.Item;
+
+public class ContentBuilder {
+ private ContentBuilder() {
+ throw new UnsupportedOperationException();
+ }
+
+ private static Items genericItems(JsonNode sequence) {
+ Items itemsObj = new Items();
+
+ JsonNode item = sequence.get("item");
+ if (item != null) {
+ Item itemObj = new Item();
+
+ JsonNode itis = item.get("itis");
+ if (itis != null) {
+ itemObj.setItis(itis.asText());
+ }
+
+ JsonNode text = item.get("text");
+ if (text != null) {
+ itemObj.setText(text.asText());
+ }
+
+ itemsObj.setItem(itemObj);
+ }
+
+ return itemsObj;
+ }
+
+ private static Items[] genericSequence(JsonNode contentType) {
+ Items[] sequenceObj = null;
+
+ JsonNode sequence = contentType.get("SEQUENCE");
+ if (sequence != null) {
+ List iList = new ArrayList<>();
+
+ if (sequence.isArray()) {
+ Iterator elements = sequence.elements();
+
+ while (elements.hasNext()) {
+ iList.add(genericItems(elements.next()));
+ }
+ } else {
+ iList.add(genericItems(sequence));
+ }
+
+ sequenceObj = iList.toArray(new Items[0]);
+ }
+
+ return sequenceObj;
+ }
+
+ public static Content genericContent(JsonNode content) {
+ Content contentObj = new Content();
+
+ JsonNode advisory = content.get("advisory");
+ if (advisory != null) {
+ ITIS_CodesAndText adivsoryObj = new ITIS_CodesAndText();
+ adivsoryObj.setSEQUENCE(genericSequence(advisory));
+ contentObj.setAdvisory(adivsoryObj);
+ }
+
+ JsonNode workZone = content.get("workZone");
+ if (workZone != null) {
+ ITIS_CodesAndText workZoneObj = new ITIS_CodesAndText();
+ workZoneObj.setSEQUENCE(genericSequence(workZone));
+ contentObj.setWorkZone(workZoneObj);
+ }
+
+ JsonNode genericSign = content.get("genericSign");
+ if (genericSign != null) {
+ ITIS_CodesAndText genericSignObj = new ITIS_CodesAndText();
+ genericSignObj.setSEQUENCE(genericSequence(genericSign));
+ contentObj.setGenericSign(genericSignObj);
+ }
+
+ JsonNode speedLimit = content.get("speedLimit");
+ if (speedLimit != null) {
+ ITIS_CodesAndText speedLimitObj = new ITIS_CodesAndText();
+ speedLimitObj.setSEQUENCE(genericSequence(speedLimit));
+ contentObj.setSpeedLimit(speedLimitObj);
+ }
+
+ JsonNode exitService = content.get("exitService");
+ if (exitService != null) {
+ ITIS_CodesAndText exitServiceObj = new ITIS_CodesAndText();
+ exitServiceObj.setSEQUENCE(genericSequence(exitService));
+ contentObj.setExitService(exitServiceObj);
+ }
+
+ return contentObj;
+ }
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/GenericLaneBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/GenericLaneBuilder.java
index 30d6eaf59..d7dd7ec10 100644
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/GenericLaneBuilder.java
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/GenericLaneBuilder.java
@@ -106,7 +106,7 @@ public static J2735GenericLane genericGenericLane(JsonNode laneSetNode) {
JsonNode nodeList = laneSetNode.get("nodeList");
if (nodeList != null) {
- genericLane.setNodeList(NodeListBuilder.genericNodeList(nodeList));
+ genericLane.setNodeList(NodeListXYBuilder.genericNodeListXY(nodeList));
}
JsonNode connectsTo = laneSetNode.get("connectsTo");
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/LaneDataAttributeBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/LaneDataAttributeBuilder.java
new file mode 100644
index 000000000..072f66bf8
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/LaneDataAttributeBuilder.java
@@ -0,0 +1,47 @@
+package us.dot.its.jpo.ode.plugin.j2735.builders;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import us.dot.its.jpo.ode.plugin.j2735.J2735LaneDataAttribute;
+
+public class LaneDataAttributeBuilder {
+ private LaneDataAttributeBuilder() {
+ throw new UnsupportedOperationException();
+ }
+
+ public static J2735LaneDataAttribute genericLaneDataAttribute(JsonNode data) {
+ J2735LaneDataAttribute laneDataAttribute = new J2735LaneDataAttribute();
+
+ JsonNode pathEndPointAngle = data.get("pathEndPointAngle");
+ if (pathEndPointAngle != null) {
+ laneDataAttribute.setPathEndPointAngle(pathEndPointAngle.asInt());
+ }
+
+ JsonNode laneCrownPointCenter = data.get("laneCrownPointCenter");
+ if (laneCrownPointCenter != null) {
+ laneDataAttribute.setLaneCrownPointCenter(laneCrownPointCenter.asInt());
+ }
+
+ JsonNode laneCrownPointLeft = data.get("laneCrownPointLeft");
+ if (laneCrownPointLeft != null) {
+ laneDataAttribute.setLaneCrownPointLeft(laneCrownPointLeft.asInt());
+ }
+
+ JsonNode laneCrownPointRight = data.get("laneCrownPointRight");
+ if (laneCrownPointRight != null) {
+ laneDataAttribute.setLaneCrownPointRight(laneCrownPointRight.asInt());
+ }
+
+ JsonNode laneAngle = data.get("laneAngle");
+ if (laneAngle != null) {
+ laneDataAttribute.setLaneAngle(laneAngle.asInt());
+ }
+
+ JsonNode speedLimits = data.get("speedLimits");
+ if (speedLimits != null) {
+ laneDataAttribute.setSpeedLimits(SpeedLimitListBuilder.genericSpeedLimitList(speedLimits));
+ }
+
+ return laneDataAttribute;
+ }
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeBuilder.java
deleted file mode 100644
index 2516205a4..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeBuilder.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735.builders;
-
-import java.math.BigDecimal;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-import us.dot.its.jpo.ode.plugin.j2735.J2735NodeLLmD64b;
-import us.dot.its.jpo.ode.plugin.j2735.J2735NodeOffsetPointXY;
-import us.dot.its.jpo.ode.plugin.j2735.J2735NodeXY;
-import us.dot.its.jpo.ode.plugin.j2735.J2735Node_XY;
-import us.dot.its.jpo.ode.plugin.j2735.J2735NodeAttributeSetXY;
-
-
-public class NodeBuilder {
-
- public static J2735NodeXY genericNode(JsonNode NodeJson) {
- J2735NodeXY nodeXY = new J2735NodeXY();
- if (NodeJson.get("delta") != null) {
- J2735NodeOffsetPointXY pointoffsetXY = new J2735NodeOffsetPointXY();
- JsonNode NodeOffsetNode = NodeJson.get("delta");
- if(NodeOffsetNode.get("node-XY1") != null)
- {
- BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY1").get("x").asInt());
- BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY1").get("y").asInt());
- J2735Node_XY point = new J2735Node_XY(x,y);
- pointoffsetXY.setNodeXY1(point);
- }
- if(NodeOffsetNode.get("node-XY2") != null)
- {
- BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY2").get("x").asInt());
- BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY2").get("y").asInt());
- J2735Node_XY point = new J2735Node_XY(x,y);
- pointoffsetXY.setNodeXY2(point);
- }
- if(NodeOffsetNode.get("node-XY3") != null)
- {
- BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY3").get("x").asInt());
- BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY3").get("y").asInt());
- J2735Node_XY point = new J2735Node_XY(x,y);
- pointoffsetXY.setNodeXY3(point);
- }
- if(NodeOffsetNode.get("node-XY4") != null)
- {
- BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY4").get("x").asInt());
- BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY4").get("y").asInt());
- J2735Node_XY point = new J2735Node_XY(x,y);
- pointoffsetXY.setNodeXY4(point);
- }
- if(NodeOffsetNode.get("node-XY5") != null)
- {
- BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY5").get("x").asInt());
- BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY5").get("y").asInt());
- J2735Node_XY point = new J2735Node_XY(x,y);
- pointoffsetXY.setNodeXY5(point);
- }
- if(NodeOffsetNode.get("node-XY6") != null)
- {
- BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY6").get("x").asInt());
- BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY6").get("y").asInt());
- J2735Node_XY point = new J2735Node_XY(x,y);
- pointoffsetXY.setNodeXY6(point);
- }
- if(NodeOffsetNode.get("node-LatLon") != null)
- {
- BigDecimal lon =BigDecimal.valueOf( NodeOffsetNode.get("node-LatLon").get("lon").asInt());
- BigDecimal lat =BigDecimal.valueOf( NodeOffsetNode.get("node-LatLon").get("lat").asInt());
- J2735NodeLLmD64b point = new J2735NodeLLmD64b(lon,lat);
- pointoffsetXY.setNodeLatLon(point);
- }
- nodeXY.setDelta(pointoffsetXY);
- }
-
- if (NodeJson.get("attributes") != null) {
- J2735NodeAttributeSetXY attributeSetXY = new J2735NodeAttributeSetXY();
- JsonNode attributes = NodeJson.get("attributes");
-
- // TODO: finish attributes with all of the lists
-
- if(attributes.get("dElevation") != null)
- {
- attributeSetXY.setdElevation(attributes.get("dElevation").asInt());
- }
-
- nodeXY.setAttributes(attributeSetXY);
- }
- return nodeXY;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeListBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeListBuilder.java
deleted file mode 100644
index 264aa6f89..000000000
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeListBuilder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package us.dot.its.jpo.ode.plugin.j2735.builders;
-
-import java.util.Iterator;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-import us.dot.its.jpo.ode.plugin.j2735.J2735NodeListXY;
-import us.dot.its.jpo.ode.plugin.j2735.J2735NodeSetXY;
-
-public class NodeListBuilder {
- private NodeListBuilder() {
- throw new UnsupportedOperationException();
- }
-
- public static J2735NodeListXY genericNodeList(JsonNode nodeListNode) {
- J2735NodeListXY nodeList = new J2735NodeListXY();
-
- if (nodeListNode.get("nodes") != null) {
- J2735NodeSetXY nodeSet = new J2735NodeSetXY();
-
- JsonNode nodeXY = nodeListNode.get("nodes").get("NodeXY");
- if (nodeXY != null && nodeXY.isArray()) {
- Iterator elements = nodeXY.elements();
-
- while (elements.hasNext()) {
- nodeSet.getNodes().add(NodeBuilder.genericNode(elements.next()));
- }
- } else if (nodeXY != null) {
- nodeSet.getNodes().add(NodeBuilder.genericNode(nodeXY));
- }
-
- nodeList.setNodes(nodeSet);
- } else if (nodeListNode.get("computed") != null) {
- // TODO
- }
-
- return nodeList;
- }
-
-}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeListXYBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeListXYBuilder.java
new file mode 100644
index 000000000..b6a320bff
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeListXYBuilder.java
@@ -0,0 +1,48 @@
+package us.dot.its.jpo.ode.plugin.j2735.builders;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import us.dot.its.jpo.ode.plugin.j2735.J2735ComputedLane;
+import us.dot.its.jpo.ode.plugin.j2735.J2735NodeListXY;
+import us.dot.its.jpo.ode.plugin.j2735.J2735NodeXY;
+
+public class NodeListXYBuilder {
+ private NodeListXYBuilder() {
+ throw new UnsupportedOperationException();
+ }
+
+ public static J2735NodeListXY genericNodeListXY(JsonNode nodeListNode) {
+ J2735NodeListXY nodeList = new J2735NodeListXY();
+
+ if (nodeListNode.get("nodes") != null) {
+ JsonNode nodeXY = nodeListNode.get("nodes").get("NodeXY");
+ if (nodeXY != null) {
+ List nxyList = new ArrayList<>();
+
+ if (nodeXY.isArray()) {
+ Iterator elements = nodeXY.elements();
+
+ while (elements.hasNext()) {
+ nxyList.add(NodeXYBuilder.genericNodeXY(elements.next()));
+ }
+ } else {
+ nxyList.add(NodeXYBuilder.genericNodeXY(nodeXY));
+ }
+
+ nodeList.setNodes(nxyList.toArray(new J2735NodeXY[0]));
+ }
+ } else if (nodeListNode.get("computed") != null) {
+ JsonNode computedLane = nodeListNode.get("computed");
+ if (computedLane != null) {
+ nodeList.setComputed(ComputedLaneBuilder.genericComputedLane(computedLane));
+ }
+ }
+
+ return nodeList;
+ }
+
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeXYBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeXYBuilder.java
new file mode 100644
index 000000000..a17da3c71
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/NodeXYBuilder.java
@@ -0,0 +1,187 @@
+package us.dot.its.jpo.ode.plugin.j2735.builders;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import us.dot.its.jpo.ode.plugin.j2735.J2735NodeLLmD64b;
+import us.dot.its.jpo.ode.plugin.j2735.J2735NodeOffsetPointXY;
+import us.dot.its.jpo.ode.plugin.j2735.J2735NodeXY;
+import us.dot.its.jpo.ode.plugin.j2735.J2735Node_XY;
+import us.dot.its.jpo.ode.plugin.j2735.J2735SegmentAttribute;
+import us.dot.its.jpo.ode.plugin.j2735.J2735LaneDataAttribute;
+import us.dot.its.jpo.ode.plugin.j2735.J2735NodeAttribute;
+import us.dot.its.jpo.ode.plugin.j2735.J2735NodeAttributeSet;
+
+
+public class NodeXYBuilder {
+ private NodeXYBuilder() {
+ throw new UnsupportedOperationException();
+ }
+
+ public static J2735NodeXY genericNodeXY(JsonNode NodeJson) {
+ J2735NodeXY nodeXY = new J2735NodeXY();
+ if (NodeJson.get("delta") != null) {
+ J2735NodeOffsetPointXY pointoffsetXY = new J2735NodeOffsetPointXY();
+ JsonNode NodeOffsetNode = NodeJson.get("delta");
+ if(NodeOffsetNode.get("node-XY1") != null)
+ {
+ BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY1").get("x").asInt());
+ BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY1").get("y").asInt());
+ J2735Node_XY point = new J2735Node_XY(x,y);
+ pointoffsetXY.setNodeXY1(point);
+ }
+ if(NodeOffsetNode.get("node-XY2") != null)
+ {
+ BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY2").get("x").asInt());
+ BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY2").get("y").asInt());
+ J2735Node_XY point = new J2735Node_XY(x,y);
+ pointoffsetXY.setNodeXY2(point);
+ }
+ if(NodeOffsetNode.get("node-XY3") != null)
+ {
+ BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY3").get("x").asInt());
+ BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY3").get("y").asInt());
+ J2735Node_XY point = new J2735Node_XY(x,y);
+ pointoffsetXY.setNodeXY3(point);
+ }
+ if(NodeOffsetNode.get("node-XY4") != null)
+ {
+ BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY4").get("x").asInt());
+ BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY4").get("y").asInt());
+ J2735Node_XY point = new J2735Node_XY(x,y);
+ pointoffsetXY.setNodeXY4(point);
+ }
+ if(NodeOffsetNode.get("node-XY5") != null)
+ {
+ BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY5").get("x").asInt());
+ BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY5").get("y").asInt());
+ J2735Node_XY point = new J2735Node_XY(x,y);
+ pointoffsetXY.setNodeXY5(point);
+ }
+ if(NodeOffsetNode.get("node-XY6") != null)
+ {
+ BigDecimal x =BigDecimal.valueOf( NodeOffsetNode.get("node-XY6").get("x").asInt());
+ BigDecimal y =BigDecimal.valueOf( NodeOffsetNode.get("node-XY6").get("y").asInt());
+ J2735Node_XY point = new J2735Node_XY(x,y);
+ pointoffsetXY.setNodeXY6(point);
+ }
+ if(NodeOffsetNode.get("node-LatLon") != null)
+ {
+ BigDecimal lon =BigDecimal.valueOf( NodeOffsetNode.get("node-LatLon").get("lon").asInt());
+ BigDecimal lat =BigDecimal.valueOf( NodeOffsetNode.get("node-LatLon").get("lat").asInt());
+ J2735NodeLLmD64b point = new J2735NodeLLmD64b(lon,lat);
+ pointoffsetXY.setNodeLatLon(point);
+ }
+ nodeXY.setDelta(pointoffsetXY);
+ }
+
+ if (NodeJson.get("attributes") != null) {
+ J2735NodeAttributeSet attributeSet = new J2735NodeAttributeSet();
+ JsonNode attributes = NodeJson.get("attributes");
+
+ JsonNode localNode = attributes.get("localNode");
+ if (localNode != null) {
+ JsonNode nodeAttributeXY = localNode.get("NodeAttributeXY");
+ if (nodeAttributeXY != null) {
+ List naList = new ArrayList<>();
+
+ if (nodeAttributeXY.isArray()) {
+ Iterator elements = nodeAttributeXY.elements();
+
+ while (elements.hasNext()) {
+ String nodeAttributeValue = elements.next().fields().next().getKey();
+ naList.add(J2735NodeAttribute.valueOf(nodeAttributeValue));
+ }
+ } else {
+ String nodeAttributeValue = nodeAttributeXY.fields().next().getKey();
+ naList.add(J2735NodeAttribute.valueOf(nodeAttributeValue));
+ }
+
+ attributeSet.setLocalNode(naList.toArray(new J2735NodeAttribute[0]));
+ }
+ }
+
+ JsonNode disabled = attributes.get("disabled");
+ if (disabled != null) {
+ JsonNode segmentAttributeXY = disabled.get("SegmentAttributeXY");
+ if (segmentAttributeXY != null) {
+ List saList = new ArrayList<>();
+
+ if (segmentAttributeXY.isArray()) {
+ Iterator elements = segmentAttributeXY.elements();
+
+ while (elements.hasNext()) {
+ String segmentAttributeValue = elements.next().fields().next().getKey();
+ saList.add(J2735SegmentAttribute.valueOf(segmentAttributeValue));
+ }
+ } else {
+ String segmentAttributeValue = segmentAttributeXY.fields().next().getKey();
+ saList.add(J2735SegmentAttribute.valueOf(segmentAttributeValue));
+ }
+
+ attributeSet.setDisabled(saList.toArray(new J2735SegmentAttribute[0]));
+ }
+ }
+
+ JsonNode enabled = attributes.get("enabled");
+ if (enabled != null) {
+ JsonNode segmentAttributeXY = enabled.get("SegmentAttributeXY");
+ if (segmentAttributeXY != null) {
+ List saList = new ArrayList<>();
+
+ if (segmentAttributeXY.isArray()) {
+ Iterator elements = segmentAttributeXY.elements();
+
+ while (elements.hasNext()) {
+ String segmentAttributeValue = elements.next().fields().next().getKey();
+ saList.add(J2735SegmentAttribute.valueOf(segmentAttributeValue));
+ }
+ } else {
+ String segmentAttributeValue = segmentAttributeXY.fields().next().getKey();
+ saList.add(J2735SegmentAttribute.valueOf(segmentAttributeValue));
+ }
+
+ attributeSet.setEnabled(saList.toArray(new J2735SegmentAttribute[0]));
+ }
+ }
+
+ JsonNode data = attributes.get("data");
+ if (data != null) {
+ JsonNode laneDataAttribute = data.get("LaneDataAttribute");
+ if (laneDataAttribute != null) {
+ List ldaList = new ArrayList<>();
+
+ if (laneDataAttribute.isArray()) {
+ Iterator elements = laneDataAttribute.elements();
+
+ while (elements.hasNext()) {
+ ldaList.add(LaneDataAttributeBuilder.genericLaneDataAttribute(elements.next()));
+ }
+ } else {
+ ldaList.add(LaneDataAttributeBuilder.genericLaneDataAttribute(laneDataAttribute));
+ }
+
+ attributeSet.setData(ldaList.toArray(new J2735LaneDataAttribute[0]));
+ }
+ }
+
+ if(attributes.get("dWidth") != null)
+ {
+ attributeSet.setdWidth(attributes.get("dWidth").asInt());
+ }
+
+ if(attributes.get("dElevation") != null)
+ {
+ attributeSet.setdElevation(attributes.get("dElevation").asInt());
+ }
+
+ nodeXY.setAttributes(attributeSet);
+ }
+ return nodeXY;
+ }
+
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/Position3DBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/Position3DBuilder.java
index 034bef985..7a9b2146b 100644
--- a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/Position3DBuilder.java
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/Position3DBuilder.java
@@ -36,7 +36,10 @@ private Position3DBuilder() {
public static DsrcPosition3D dsrcPosition3D(JsonNode pos) {
Long latitude = pos.get("lat").asLong();
Long longitude = pos.get("long").asLong();
- Long elevation = pos.get(ELEVATION).asLong();
+ Long elevation = null;
+ if (pos.get(ELEVATION) != null) {
+ elevation = pos.get(ELEVATION).asLong();
+ }
return new DsrcPosition3D(latitude, longitude, elevation);
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/RoadSignIdBuilder.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/RoadSignIdBuilder.java
new file mode 100644
index 000000000..0ec65cca6
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/builders/RoadSignIdBuilder.java
@@ -0,0 +1,41 @@
+package us.dot.its.jpo.ode.plugin.j2735.builders;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import us.dot.its.jpo.ode.plugin.j2735.DsrcPosition3D;
+import us.dot.its.jpo.ode.plugin.j2735.J2735MutcdCode;
+import us.dot.its.jpo.ode.plugin.j2735.J2735RoadSignId;
+
+public class RoadSignIdBuilder {
+ private RoadSignIdBuilder() {
+ throw new UnsupportedOperationException();
+ }
+
+ public static J2735RoadSignId genericRoadSignId(JsonNode roadSignId) {
+ J2735RoadSignId genericRoadSignId = new J2735RoadSignId();
+
+ JsonNode position = roadSignId.get("position");
+ if (position != null) {
+ DsrcPosition3D dsrcPosition3d = Position3DBuilder.dsrcPosition3D(position);
+ genericRoadSignId.setPosition(Position3DBuilder.odePosition3D(dsrcPosition3d));
+ }
+
+ JsonNode viewAngle = roadSignId.get("viewAngle");
+ if (viewAngle != null) {
+ genericRoadSignId.setViewAngle(viewAngle.asText());
+ }
+
+ JsonNode mutcdCode = roadSignId.get("mutcdCode");
+ if (mutcdCode != null) {
+ String mutcdCodeValue = mutcdCode.fields().next().getKey();
+ genericRoadSignId.setMutcdCode(J2735MutcdCode.valueOf(mutcdCodeValue));
+ }
+
+ JsonNode crc = roadSignId.get("crc");
+ if (crc != null) {
+ genericRoadSignId.setCrc(crc.asText());
+ }
+
+ return genericRoadSignId;
+ }
+}
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Angle.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Angle.java
new file mode 100644
index 000000000..86182260b
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Angle.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Angle.AngleDeserializer.class)
+public class Angle extends Asn1Integer {
+
+ public Angle() {
+ super(0L, 28800L);
+ }
+
+ @JsonCreator
+ public Angle(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class AngleDeserializer extends IntegerDeserializer {
+ public AngleDeserializer() {
+ super(Angle.class);
+ }
+
+ @Override
+ protected Angle construct() {
+ return new Angle();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ComputedLane.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ComputedLane.java
new file mode 100644
index 000000000..b93094c46
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ComputedLane.java
@@ -0,0 +1,107 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_ComputedLane;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class ComputedLane extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "referenceLaneId")
+ @JsonProperty("referenceLaneId")
+ private LaneID referenceLaneId;
+ @Asn1Property(tag = 1, name = "offsetXaxis")
+ @JsonProperty("offsetXaxis")
+ private OffsetXaxisChoice offsetXaxis;
+ @Asn1Property(tag = 2, name = "offsetYaxis")
+ @JsonProperty("offsetYaxis")
+ private OffsetYaxisChoice offsetYaxis;
+ @Asn1Property(tag = 3, name = "rotateXY", optional = true)
+ @JsonProperty("rotateXY")
+ private Angle rotateXY;
+ @Asn1Property(tag = 4, name = "scaleXaxis", optional = true)
+ @JsonProperty("scaleXaxis")
+ private Scale_B12 scaleXaxis;
+ @Asn1Property(tag = 5, name = "scaleYaxis", optional = true)
+ @JsonProperty("scaleYaxis")
+ private Scale_B12 scaleYaxis;
+ @Asn1Property(tag = 6, name = "regional", optional = true)
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class OffsetXaxisChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "small")
+ @JsonProperty("small")
+ private DrivenLineOffsetSm small;
+ @Asn1Property(tag = 1, name = "large")
+ @JsonProperty("large")
+ private DrivenLineOffsetLg large;
+
+ OffsetXaxisChoice() {
+ super(false);
+ }
+ }
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class OffsetYaxisChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "small")
+ @JsonProperty("small")
+ private DrivenLineOffsetSm small;
+ @Asn1Property(tag = 1, name = "large")
+ @JsonProperty("large")
+ private DrivenLineOffsetLg large;
+
+ OffsetYaxisChoice() {
+ super(false);
+ }
+ }
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_ComputedLane.class, 1L, 4L);
+ }
+ }
+
+ ComputedLane() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DYear.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DYear.java
new file mode 100644
index 000000000..bf4ce23f5
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DYear.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = DYear.DYearDeserializer.class)
+public class DYear extends Asn1Integer {
+
+ public DYear() {
+ super(0L, 4095L);
+ }
+
+ @JsonCreator
+ public DYear(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class DYearDeserializer extends IntegerDeserializer {
+ public DYearDeserializer() {
+ super(DYear.class);
+ }
+
+ @Override
+ protected DYear construct() {
+ return new DYear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DeltaAngle.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DeltaAngle.java
new file mode 100644
index 000000000..e28d2e173
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DeltaAngle.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = DeltaAngle.DeltaAngleDeserializer.class)
+public class DeltaAngle extends Asn1Integer {
+
+ public DeltaAngle() {
+ super(-150L, 150L);
+ }
+
+ @JsonCreator
+ public DeltaAngle(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class DeltaAngleDeserializer extends IntegerDeserializer {
+ public DeltaAngleDeserializer() {
+ super(DeltaAngle.class);
+ }
+
+ @Override
+ protected DeltaAngle construct() {
+ return new DeltaAngle();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DescriptiveName.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DescriptiveName.java
new file mode 100644
index 000000000..a292428b2
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DescriptiveName.java
@@ -0,0 +1,39 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import us.dot.its.jpo.ode.plugin.types.IA5String;
+
+public class DescriptiveName extends IA5String {
+
+ public DescriptiveName() {
+ super(1, 63);
+ }
+
+ @JsonCreator
+ public DescriptiveName(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DrivenLineOffsetLg.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DrivenLineOffsetLg.java
new file mode 100644
index 000000000..046a5b74b
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DrivenLineOffsetLg.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = DrivenLineOffsetLg.DrivenLineOffsetLgDeserializer.class)
+public class DrivenLineOffsetLg extends Asn1Integer {
+
+ public DrivenLineOffsetLg() {
+ super(-32767L, 32767L);
+ }
+
+ @JsonCreator
+ public DrivenLineOffsetLg(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class DrivenLineOffsetLgDeserializer extends IntegerDeserializer {
+ public DrivenLineOffsetLgDeserializer() {
+ super(DrivenLineOffsetLg.class);
+ }
+
+ @Override
+ protected DrivenLineOffsetLg construct() {
+ return new DrivenLineOffsetLg();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DrivenLineOffsetSm.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DrivenLineOffsetSm.java
new file mode 100644
index 000000000..af6fd6530
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/DrivenLineOffsetSm.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = DrivenLineOffsetSm.DrivenLineOffsetSmDeserializer.class)
+public class DrivenLineOffsetSm extends Asn1Integer {
+
+ public DrivenLineOffsetSm() {
+ super(-2047L, 2047L);
+ }
+
+ @JsonCreator
+ public DrivenLineOffsetSm(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class DrivenLineOffsetSmDeserializer extends IntegerDeserializer {
+ public DrivenLineOffsetSmDeserializer() {
+ super(DrivenLineOffsetSm.class);
+ }
+
+ @Override
+ protected DrivenLineOffsetSm construct() {
+ return new DrivenLineOffsetSm();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Elevation.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Elevation.java
new file mode 100644
index 000000000..8cc6ad4d3
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Elevation.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Elevation.ElevationDeserializer.class)
+public class Elevation extends Asn1Integer {
+
+ public Elevation() {
+ super(-4096L, 61439L);
+ }
+
+ @JsonCreator
+ public Elevation(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class ElevationDeserializer extends IntegerDeserializer {
+ public ElevationDeserializer() {
+ super(Elevation.class);
+ }
+
+ @Override
+ protected Elevation construct() {
+ return new Elevation();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Extent.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Extent.java
new file mode 100644
index 000000000..4cac2a61e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Extent.java
@@ -0,0 +1,61 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = ExtentSerializer.class)
+@JsonDeserialize(using = ExtentDeserializer.class)
+public enum Extent implements Asn1Enumerated {
+ USEINSTANTLYONLY(0, "useInstantlyOnly"), USEFOR3METERS(1, "useFor3meters"), USEFOR10METERS(2,
+ "useFor10meters"), USEFOR50METERS(3, "useFor50meters"), USEFOR100METERS(4,
+ "useFor100meters"), USEFOR500METERS(5, "useFor500meters"), USEFOR1000METERS(6,
+ "useFor1000meters"), USEFOR5000METERS(7, "useFor5000meters"), USEFOR10000METERS(8,
+ "useFor10000meters"), USEFOR50000METERS(9, "useFor50000meters"), USEFOR100000METERS(
+ 10, "useFor100000meters"), USEFOR500000METERS(11,
+ "useFor500000meters"), USEFOR1000000METERS(12,
+ "useFor1000000meters"), USEFOR5000000METERS(13,
+ "useFor5000000meters"), USEFOR10000000METERS(14,
+ "useFor10000000meters"), FOREVER(15,
+ "forever");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private Extent(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 15;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ExtentDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ExtentDeserializer.java
new file mode 100644
index 000000000..e976def33
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ExtentDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class ExtentDeserializer extends EnumeratedDeserializer {
+
+ ExtentDeserializer() {
+ super(Extent.class);
+ }
+
+ @Override
+ protected Extent[] listEnumValues() {
+ return Extent.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ExtentSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ExtentSerializer.java
new file mode 100644
index 000000000..b527d6de2
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/ExtentSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class ExtentSerializer extends EnumeratedSerializer {
+
+ ExtentSerializer() {
+ super(Extent.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/FurtherInfoID.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/FurtherInfoID.java
new file mode 100644
index 000000000..8e77ca552
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/FurtherInfoID.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import us.dot.its.jpo.ode.plugin.types.Asn1OctetString;
+
+public class FurtherInfoID extends Asn1OctetString {
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+ public FurtherInfoID() {
+ super(2, 2);
+ }
+
+ @JsonCreator
+ public FurtherInfoID(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/HeadingSlice.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/HeadingSlice.java
new file mode 100644
index 000000000..11c739dc5
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/HeadingSlice.java
@@ -0,0 +1,168 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.types.Asn1Bitstring;
+
+@JsonDeserialize(using = HeadingSliceDeserializer.class)
+public class HeadingSlice extends Asn1Bitstring {
+
+ public boolean isFrom000_0to022_5degrees() {
+ return get(0);
+ }
+
+ public void setFrom000_0to022_5degrees(boolean from000_0to022_5degrees) {
+ set(0, from000_0to022_5degrees);
+ }
+
+ public boolean isFrom022_5to045_0degrees() {
+ return get(1);
+ }
+
+ public void setFrom022_5to045_0degrees(boolean from022_5to045_0degrees) {
+ set(1, from022_5to045_0degrees);
+ }
+
+ public boolean isFrom045_0to067_5degrees() {
+ return get(2);
+ }
+
+ public void setFrom045_0to067_5degrees(boolean from045_0to067_5degrees) {
+ set(2, from045_0to067_5degrees);
+ }
+
+ public boolean isFrom067_5to090_0degrees() {
+ return get(3);
+ }
+
+ public void setFrom067_5to090_0degrees(boolean from067_5to090_0degrees) {
+ set(3, from067_5to090_0degrees);
+ }
+
+ public boolean isFrom090_0to112_5degrees() {
+ return get(4);
+ }
+
+ public void setFrom090_0to112_5degrees(boolean from090_0to112_5degrees) {
+ set(4, from090_0to112_5degrees);
+ }
+
+ public boolean isFrom112_5to135_0degrees() {
+ return get(5);
+ }
+
+ public void setFrom112_5to135_0degrees(boolean from112_5to135_0degrees) {
+ set(5, from112_5to135_0degrees);
+ }
+
+ public boolean isFrom135_0to157_5degrees() {
+ return get(6);
+ }
+
+ public void setFrom135_0to157_5degrees(boolean from135_0to157_5degrees) {
+ set(6, from135_0to157_5degrees);
+ }
+
+ public boolean isFrom157_5to180_0degrees() {
+ return get(7);
+ }
+
+ public void setFrom157_5to180_0degrees(boolean from157_5to180_0degrees) {
+ set(7, from157_5to180_0degrees);
+ }
+
+ public boolean isFrom180_0to202_5degrees() {
+ return get(8);
+ }
+
+ public void setFrom180_0to202_5degrees(boolean from180_0to202_5degrees) {
+ set(8, from180_0to202_5degrees);
+ }
+
+ public boolean isFrom202_5to225_0degrees() {
+ return get(9);
+ }
+
+ public void setFrom202_5to225_0degrees(boolean from202_5to225_0degrees) {
+ set(9, from202_5to225_0degrees);
+ }
+
+ public boolean isFrom225_0to247_5degrees() {
+ return get(10);
+ }
+
+ public void setFrom225_0to247_5degrees(boolean from225_0to247_5degrees) {
+ set(10, from225_0to247_5degrees);
+ }
+
+ public boolean isFrom247_5to270_0degrees() {
+ return get(11);
+ }
+
+ public void setFrom247_5to270_0degrees(boolean from247_5to270_0degrees) {
+ set(11, from247_5to270_0degrees);
+ }
+
+ public boolean isFrom270_0to292_5degrees() {
+ return get(12);
+ }
+
+ public void setFrom270_0to292_5degrees(boolean from270_0to292_5degrees) {
+ set(12, from270_0to292_5degrees);
+ }
+
+ public boolean isFrom292_5to315_0degrees() {
+ return get(13);
+ }
+
+ public void setFrom292_5to315_0degrees(boolean from292_5to315_0degrees) {
+ set(13, from292_5to315_0degrees);
+ }
+
+ public boolean isFrom315_0to337_5degrees() {
+ return get(14);
+ }
+
+ public void setFrom315_0to337_5degrees(boolean from315_0to337_5degrees) {
+ set(14, from315_0to337_5degrees);
+ }
+
+ public boolean isFrom337_5to360_0degrees() {
+ return get(15);
+ }
+
+ public void setFrom337_5to360_0degrees(boolean from337_5to360_0degrees) {
+ set(15, from337_5to360_0degrees);
+ }
+
+ public HeadingSlice() {
+ super(16, false,
+ new String[]{"from000-0to022-5degrees", "from022-5to045-0degrees", "from045-0to067-5degrees",
+ "from067-5to090-0degrees", "from090-0to112-5degrees", "from112-5to135-0degrees",
+ "from135-0to157-5degrees", "from157-5to180-0degrees", "from180-0to202-5degrees",
+ "from202-5to225-0degrees", "from225-0to247-5degrees", "from247-5to270-0degrees",
+ "from270-0to292-5degrees", "from292-5to315-0degrees", "from315-0to337-5degrees",
+ "from337-5to360-0degrees"});
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/HeadingSliceDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/HeadingSliceDeserializer.java
new file mode 100644
index 000000000..9cff89dcb
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/HeadingSliceDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.BitStringDeserializer;
+
+public class HeadingSliceDeserializer extends BitStringDeserializer {
+
+ HeadingSliceDeserializer() {
+ super(HeadingSlice.class);
+ }
+
+ @Override
+ protected HeadingSlice construct() {
+ return new HeadingSlice();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneDataAttribute.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneDataAttribute.java
new file mode 100644
index 000000000..338070217
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneDataAttribute.java
@@ -0,0 +1,76 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_LaneDataAttribute;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@Getter
+@Setter
+@JsonInclude(Include.NON_NULL)
+public class LaneDataAttribute extends Asn1Choice {
+
+ @Asn1Property(tag = 0, name = "pathEndPointAngle")
+ @JsonProperty("pathEndPointAngle")
+ private DeltaAngle pathEndPointAngle;
+ @Asn1Property(tag = 1, name = "laneCrownPointCenter")
+ @JsonProperty("laneCrownPointCenter")
+ private RoadwayCrownAngle laneCrownPointCenter;
+ @Asn1Property(tag = 2, name = "laneCrownPointLeft")
+ @JsonProperty("laneCrownPointLeft")
+ private RoadwayCrownAngle laneCrownPointLeft;
+ @Asn1Property(tag = 3, name = "laneCrownPointRight")
+ @JsonProperty("laneCrownPointRight")
+ private RoadwayCrownAngle laneCrownPointRight;
+ @Asn1Property(tag = 4, name = "laneAngle")
+ @JsonProperty("laneAngle")
+ private MergeDivergeNodeAngle laneAngle;
+ @Asn1Property(tag = 5, name = "speedLimits")
+ @JsonProperty("speedLimits")
+ @JacksonXmlElementWrapper(localName = "speedLimits")
+ @JacksonXmlProperty(localName = "RegulatorySpeedLimit")
+ private SpeedLimitList speedLimits;
+ @Asn1Property(tag = 6, name = "regional")
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ LaneDataAttribute() {
+ super(true);
+ }
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_LaneDataAttribute.class, 1L, 4L);
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneDataAttributeList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneDataAttributeList.java
new file mode 100644
index 000000000..f36ecf60b
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneDataAttributeList.java
@@ -0,0 +1,58 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.serialization.SequenceOfChoiceDeserializer;
+import us.dot.its.jpo.ode.plugin.serialization.SequenceOfChoiceSerializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class LaneDataAttributeList extends Asn1SequenceOf {
+
+ LaneDataAttributeList() {
+ super(LaneDataAttribute.class, 1L, 8L);
+ }
+
+ public static class LaneDataAttributeListSerializer
+ extends
+ SequenceOfChoiceSerializer {
+ public LaneDataAttributeListSerializer() {
+ super(LaneDataAttribute.class, LaneDataAttributeList.class);
+ }
+ }
+
+ public static class LaneDataAttributeListDeserializer
+ extends
+ SequenceOfChoiceDeserializer {
+ public LaneDataAttributeListDeserializer() {
+ super(LaneDataAttribute.class, LaneDataAttributeList.class);
+ }
+
+ @Override
+ protected LaneDataAttributeList construct() {
+ return new LaneDataAttributeList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneID.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneID.java
new file mode 100644
index 000000000..2cdc7d309
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneID.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = LaneID.LaneIDDeserializer.class)
+public class LaneID extends Asn1Integer {
+
+ public LaneID() {
+ super(0L, 255L);
+ }
+
+ @JsonCreator
+ public LaneID(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class LaneIDDeserializer extends IntegerDeserializer {
+ public LaneIDDeserializer() {
+ super(LaneID.class);
+ }
+
+ @Override
+ protected LaneID construct() {
+ return new LaneID();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneWidth.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneWidth.java
new file mode 100644
index 000000000..1f9ab714b
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/LaneWidth.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = LaneWidth.LaneWidthDeserializer.class)
+public class LaneWidth extends Asn1Integer {
+
+ public LaneWidth() {
+ super(0L, 32767L);
+ }
+
+ @JsonCreator
+ public LaneWidth(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class LaneWidthDeserializer extends IntegerDeserializer {
+ public LaneWidthDeserializer() {
+ super(LaneWidth.class);
+ }
+
+ @Override
+ protected LaneWidth construct() {
+ return new LaneWidth();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Latitude.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Latitude.java
new file mode 100644
index 000000000..bfe2934cc
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Latitude.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Latitude.LatitudeDeserializer.class)
+public class Latitude extends Asn1Integer {
+
+ public Latitude() {
+ super(-900000000L, 900000001L);
+ }
+
+ @JsonCreator
+ public Latitude(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class LatitudeDeserializer extends IntegerDeserializer {
+ public LatitudeDeserializer() {
+ super(Latitude.class);
+ }
+
+ @Override
+ protected Latitude construct() {
+ return new Latitude();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Longitude.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Longitude.java
new file mode 100644
index 000000000..cced10041
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Longitude.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Longitude.LongitudeDeserializer.class)
+public class Longitude extends Asn1Integer {
+
+ public Longitude() {
+ super(-1799999999L, 1800000001L);
+ }
+
+ @JsonCreator
+ public Longitude(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class LongitudeDeserializer extends IntegerDeserializer {
+ public LongitudeDeserializer() {
+ super(Longitude.class);
+ }
+
+ @Override
+ protected Longitude construct() {
+ return new Longitude();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MergeDivergeNodeAngle.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MergeDivergeNodeAngle.java
new file mode 100644
index 000000000..745000a76
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MergeDivergeNodeAngle.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = MergeDivergeNodeAngle.MergeDivergeNodeAngleDeserializer.class)
+public class MergeDivergeNodeAngle extends Asn1Integer {
+
+ public MergeDivergeNodeAngle() {
+ super(-180L, 180L);
+ }
+
+ @JsonCreator
+ public MergeDivergeNodeAngle(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class MergeDivergeNodeAngleDeserializer extends IntegerDeserializer {
+ public MergeDivergeNodeAngleDeserializer() {
+ super(MergeDivergeNodeAngle.class);
+ }
+
+ @Override
+ protected MergeDivergeNodeAngle construct() {
+ return new MergeDivergeNodeAngle();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MinuteOfTheYear.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MinuteOfTheYear.java
new file mode 100644
index 000000000..9fafa1ee4
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MinuteOfTheYear.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = MinuteOfTheYear.MinuteOfTheYearDeserializer.class)
+public class MinuteOfTheYear extends Asn1Integer {
+
+ public MinuteOfTheYear() {
+ super(0L, 527040L);
+ }
+
+ @JsonCreator
+ public MinuteOfTheYear(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class MinuteOfTheYearDeserializer extends IntegerDeserializer {
+ public MinuteOfTheYearDeserializer() {
+ super(MinuteOfTheYear.class);
+ }
+
+ @Override
+ protected MinuteOfTheYear construct() {
+ return new MinuteOfTheYear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MsgCount.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MsgCount.java
new file mode 100644
index 000000000..db6e65709
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/MsgCount.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = MsgCount.MsgCountDeserializer.class)
+public class MsgCount extends Asn1Integer {
+
+ public MsgCount() {
+ super(0L, 127L);
+ }
+
+ @JsonCreator
+ public MsgCount(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class MsgCountDeserializer extends IntegerDeserializer {
+ public MsgCountDeserializer() {
+ super(MsgCount.class);
+ }
+
+ @Override
+ protected MsgCount construct() {
+ return new MsgCount();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeSetXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeSetXY.java
new file mode 100644
index 000000000..bf41d4a69
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeSetXY.java
@@ -0,0 +1,81 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_NodeAttributeSetXY;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class NodeAttributeSetXY extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "localNode", optional = true)
+ @JsonProperty("localNode")
+ @JsonDeserialize(using = NodeAttributeXYList.NodeAttributeXYListDeserializer.class)
+ private NodeAttributeXYList localNode;
+ @Asn1Property(tag = 1, name = "disabled", optional = true)
+ @JsonProperty("disabled")
+ @JsonDeserialize(using = SegmentAttributeXYList.SegmentAttributeXYListDeserializer.class)
+ private SegmentAttributeXYList disabled;
+ @Asn1Property(tag = 2, name = "enabled", optional = true)
+ @JsonProperty("enabled")
+ @JsonDeserialize(using = SegmentAttributeXYList.SegmentAttributeXYListDeserializer.class)
+ private SegmentAttributeXYList enabled;
+ @Asn1Property(tag = 3, name = "data", optional = true)
+ @JsonProperty("data")
+ @JsonSerialize(using = LaneDataAttributeList.LaneDataAttributeListSerializer.class)
+ @JsonDeserialize(using = LaneDataAttributeList.LaneDataAttributeListDeserializer.class)
+ private LaneDataAttributeList data;
+ @Asn1Property(tag = 4, name = "dWidth", optional = true)
+ @JsonProperty("dWidth")
+ private Offset_B10 dWidth;
+ @Asn1Property(tag = 5, name = "dElevation", optional = true)
+ @JsonProperty("dElevation")
+ private Offset_B10 dElevation;
+ @Asn1Property(tag = 6, name = "regional", optional = true)
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_NodeAttributeSetXY.class, 1L, 4L);
+ }
+ }
+
+ NodeAttributeSetXY() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXY.java
new file mode 100644
index 000000000..b6a1fa214
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXY.java
@@ -0,0 +1,55 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = NodeAttributeXYSerializer.class)
+@JsonDeserialize(using = NodeAttributeXYDeserializer.class)
+public enum NodeAttributeXY implements Asn1Enumerated {
+ RESERVED(0, "reserved"), STOPLINE(1, "stopLine"), ROUNDEDCAPSTYLEA(2, "roundedCapStyleA"), ROUNDEDCAPSTYLEB(3,
+ "roundedCapStyleB"), MERGEPOINT(4, "mergePoint"), DIVERGEPOINT(5, "divergePoint"), DOWNSTREAMSTOPLINE(6,
+ "downstreamStopLine"), DOWNSTREAMSTARTNODE(7, "downstreamStartNode"), CLOSEDTOTRAFFIC(8,
+ "closedToTraffic"), SAFEISLAND(9, "safeIsland"), CURBPRESENTATSTEPOFF(10,
+ "curbPresentAtStepOff"), HYDRANTPRESENT(11, "hydrantPresent");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private NodeAttributeXY(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 11;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYDeserializer.java
new file mode 100644
index 000000000..fc9c89a7d
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class NodeAttributeXYDeserializer extends EnumeratedDeserializer {
+
+ NodeAttributeXYDeserializer() {
+ super(NodeAttributeXY.class);
+ }
+
+ @Override
+ protected NodeAttributeXY[] listEnumValues() {
+ return NodeAttributeXY.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYList.java
new file mode 100644
index 000000000..268bcbce9
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYList.java
@@ -0,0 +1,54 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.serialization.SequenceOfEnumeratedDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class NodeAttributeXYList extends Asn1SequenceOf {
+
+ NodeAttributeXYList() {
+ super(NodeAttributeXY.class, 1L, 8L);
+ }
+
+ public static class NodeAttributeXYListDeserializer
+ extends
+ SequenceOfEnumeratedDeserializer {
+ public NodeAttributeXYListDeserializer() {
+ super(NodeAttributeXYList.class, NodeAttributeXY.class);
+ }
+
+ @Override
+ protected NodeAttributeXY[] listEnumValues() {
+ return NodeAttributeXY.values();
+ }
+
+ @Override
+ protected NodeAttributeXYList construct() {
+ return new NodeAttributeXYList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYSerializer.java
new file mode 100644
index 000000000..a7136a038
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeAttributeXYSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class NodeAttributeXYSerializer extends EnumeratedSerializer {
+
+ NodeAttributeXYSerializer() {
+ super(NodeAttributeXY.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeListXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeListXY.java
new file mode 100644
index 000000000..f282ae0dd
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeListXY.java
@@ -0,0 +1,52 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+
+@Getter
+@Setter
+@JsonInclude(Include.NON_NULL)
+public class NodeListXY extends Asn1Choice {
+
+ @Asn1Property(tag = 0, name = "nodes")
+ @JsonProperty("nodes")
+ @JacksonXmlElementWrapper(localName = "nodes")
+ @JacksonXmlProperty(localName = "NodeXY")
+ private NodeSetXY nodes;
+ @Asn1Property(tag = 1, name = "computed")
+ @JsonProperty("computed")
+ private ComputedLane computed;
+
+ NodeListXY() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeOffsetPointXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeOffsetPointXY.java
new file mode 100644
index 000000000..15e9580f8
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeOffsetPointXY.java
@@ -0,0 +1,67 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_NodeOffsetPointXY;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+
+@Getter
+@Setter
+@JsonInclude(Include.NON_NULL)
+public class NodeOffsetPointXY extends Asn1Choice {
+
+ @Asn1Property(tag = 0, name = "node-XY1")
+ @JsonProperty("node-XY1")
+ private Node_XY_20b node_XY1;
+ @Asn1Property(tag = 1, name = "node-XY2")
+ @JsonProperty("node-XY2")
+ private Node_XY_22b node_XY2;
+ @Asn1Property(tag = 2, name = "node-XY3")
+ @JsonProperty("node-XY3")
+ private Node_XY_24b node_XY3;
+ @Asn1Property(tag = 3, name = "node-XY4")
+ @JsonProperty("node-XY4")
+ private Node_XY_26b node_XY4;
+ @Asn1Property(tag = 4, name = "node-XY5")
+ @JsonProperty("node-XY5")
+ private Node_XY_28b node_XY5;
+ @Asn1Property(tag = 5, name = "node-XY6")
+ @JsonProperty("node-XY6")
+ private Node_XY_32b node_XY6;
+ @Asn1Property(tag = 6, name = "node-LatLon")
+ @JsonProperty("node-LatLon")
+ private Node_LLmD_64b node_LatLon;
+ @Asn1Property(tag = 7, name = "regional")
+ @JsonProperty("regional")
+ private Reg_NodeOffsetPointXY regional;
+
+ NodeOffsetPointXY() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeSetXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeSetXY.java
new file mode 100644
index 000000000..84aee9819
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeSetXY.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class NodeSetXY extends Asn1SequenceOf {
+
+ NodeSetXY() {
+ super(NodeXY.class, 2L, 63L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeXY.java
new file mode 100644
index 000000000..7f03d2dd8
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/NodeXY.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class NodeXY extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "delta")
+ @JsonProperty("delta")
+ private NodeOffsetPointXY delta;
+ @Asn1Property(tag = 1, name = "attributes", optional = true)
+ @JsonProperty("attributes")
+ private NodeAttributeSetXY attributes;
+
+ NodeXY() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_LLmD_64b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_LLmD_64b.java
new file mode 100644
index 000000000..c2821a4be
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_LLmD_64b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LLmD_64b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private Longitude lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private Latitude lat;
+
+ Node_LLmD_64b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_20b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_20b.java
new file mode 100644
index 000000000..e3f6e6839
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_20b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_XY_20b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "x")
+ @JsonProperty("x")
+ private Offset_B10 x;
+ @Asn1Property(tag = 1, name = "y")
+ @JsonProperty("y")
+ private Offset_B10 y;
+
+ Node_XY_20b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_22b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_22b.java
new file mode 100644
index 000000000..a3db0c627
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_22b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_XY_22b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "x")
+ @JsonProperty("x")
+ private Offset_B11 x;
+ @Asn1Property(tag = 1, name = "y")
+ @JsonProperty("y")
+ private Offset_B11 y;
+
+ Node_XY_22b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_24b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_24b.java
new file mode 100644
index 000000000..031a838d9
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_24b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_XY_24b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "x")
+ @JsonProperty("x")
+ private Offset_B12 x;
+ @Asn1Property(tag = 1, name = "y")
+ @JsonProperty("y")
+ private Offset_B12 y;
+
+ Node_XY_24b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_26b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_26b.java
new file mode 100644
index 000000000..5673f4500
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_26b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_XY_26b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "x")
+ @JsonProperty("x")
+ private Offset_B13 x;
+ @Asn1Property(tag = 1, name = "y")
+ @JsonProperty("y")
+ private Offset_B13 y;
+
+ Node_XY_26b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_28b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_28b.java
new file mode 100644
index 000000000..4e564c216
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_28b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_XY_28b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "x")
+ @JsonProperty("x")
+ private Offset_B14 x;
+ @Asn1Property(tag = 1, name = "y")
+ @JsonProperty("y")
+ private Offset_B14 y;
+
+ Node_XY_28b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_32b.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_32b.java
new file mode 100644
index 000000000..a5daac524
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Node_XY_32b.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_XY_32b extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "x")
+ @JsonProperty("x")
+ private Offset_B16 x;
+ @Asn1Property(tag = 1, name = "y")
+ @JsonProperty("y")
+ private Offset_B16 y;
+
+ Node_XY_32b() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B12.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B12.java
new file mode 100644
index 000000000..136a05af4
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B12.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = OffsetLL_B12.OffsetLL_B12Deserializer.class)
+public class OffsetLL_B12 extends Asn1Integer {
+
+ public OffsetLL_B12() {
+ super(-2048L, 2047L);
+ }
+
+ @JsonCreator
+ public OffsetLL_B12(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class OffsetLL_B12Deserializer extends IntegerDeserializer {
+ public OffsetLL_B12Deserializer() {
+ super(OffsetLL_B12.class);
+ }
+
+ @Override
+ protected OffsetLL_B12 construct() {
+ return new OffsetLL_B12();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B14.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B14.java
new file mode 100644
index 000000000..82a886edc
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B14.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = OffsetLL_B14.OffsetLL_B14Deserializer.class)
+public class OffsetLL_B14 extends Asn1Integer {
+
+ public OffsetLL_B14() {
+ super(-8192L, 8191L);
+ }
+
+ @JsonCreator
+ public OffsetLL_B14(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class OffsetLL_B14Deserializer extends IntegerDeserializer {
+ public OffsetLL_B14Deserializer() {
+ super(OffsetLL_B14.class);
+ }
+
+ @Override
+ protected OffsetLL_B14 construct() {
+ return new OffsetLL_B14();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B16.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B16.java
new file mode 100644
index 000000000..3a3bd1626
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B16.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = OffsetLL_B16.OffsetLL_B16Deserializer.class)
+public class OffsetLL_B16 extends Asn1Integer {
+
+ public OffsetLL_B16() {
+ super(-32768L, 32767L);
+ }
+
+ @JsonCreator
+ public OffsetLL_B16(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class OffsetLL_B16Deserializer extends IntegerDeserializer {
+ public OffsetLL_B16Deserializer() {
+ super(OffsetLL_B16.class);
+ }
+
+ @Override
+ protected OffsetLL_B16 construct() {
+ return new OffsetLL_B16();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B18.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B18.java
new file mode 100644
index 000000000..962e8d970
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B18.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = OffsetLL_B18.OffsetLL_B18Deserializer.class)
+public class OffsetLL_B18 extends Asn1Integer {
+
+ public OffsetLL_B18() {
+ super(-131072L, 131071L);
+ }
+
+ @JsonCreator
+ public OffsetLL_B18(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class OffsetLL_B18Deserializer extends IntegerDeserializer {
+ public OffsetLL_B18Deserializer() {
+ super(OffsetLL_B18.class);
+ }
+
+ @Override
+ protected OffsetLL_B18 construct() {
+ return new OffsetLL_B18();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B22.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B22.java
new file mode 100644
index 000000000..07e064f6d
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B22.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = OffsetLL_B22.OffsetLL_B22Deserializer.class)
+public class OffsetLL_B22 extends Asn1Integer {
+
+ public OffsetLL_B22() {
+ super(-2097152L, 2097151L);
+ }
+
+ @JsonCreator
+ public OffsetLL_B22(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class OffsetLL_B22Deserializer extends IntegerDeserializer {
+ public OffsetLL_B22Deserializer() {
+ super(OffsetLL_B22.class);
+ }
+
+ @Override
+ protected OffsetLL_B22 construct() {
+ return new OffsetLL_B22();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B24.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B24.java
new file mode 100644
index 000000000..c37701e28
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/OffsetLL_B24.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = OffsetLL_B24.OffsetLL_B24Deserializer.class)
+public class OffsetLL_B24 extends Asn1Integer {
+
+ public OffsetLL_B24() {
+ super(-8388608L, 8388607L);
+ }
+
+ @JsonCreator
+ public OffsetLL_B24(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class OffsetLL_B24Deserializer extends IntegerDeserializer {
+ public OffsetLL_B24Deserializer() {
+ super(OffsetLL_B24.class);
+ }
+
+ @Override
+ protected OffsetLL_B24 construct() {
+ return new OffsetLL_B24();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B10.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B10.java
new file mode 100644
index 000000000..2ab269382
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B10.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Offset_B10.Offset_B10Deserializer.class)
+public class Offset_B10 extends Asn1Integer {
+
+ public Offset_B10() {
+ super(-512L, 511L);
+ }
+
+ @JsonCreator
+ public Offset_B10(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Offset_B10Deserializer extends IntegerDeserializer {
+ public Offset_B10Deserializer() {
+ super(Offset_B10.class);
+ }
+
+ @Override
+ protected Offset_B10 construct() {
+ return new Offset_B10();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B11.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B11.java
new file mode 100644
index 000000000..0d3c7f4a6
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B11.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Offset_B11.Offset_B11Deserializer.class)
+public class Offset_B11 extends Asn1Integer {
+
+ public Offset_B11() {
+ super(-1024L, 1023L);
+ }
+
+ @JsonCreator
+ public Offset_B11(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Offset_B11Deserializer extends IntegerDeserializer {
+ public Offset_B11Deserializer() {
+ super(Offset_B11.class);
+ }
+
+ @Override
+ protected Offset_B11 construct() {
+ return new Offset_B11();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B12.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B12.java
new file mode 100644
index 000000000..a2762e17a
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B12.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Offset_B12.Offset_B12Deserializer.class)
+public class Offset_B12 extends Asn1Integer {
+
+ public Offset_B12() {
+ super(-2048L, 2047L);
+ }
+
+ @JsonCreator
+ public Offset_B12(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Offset_B12Deserializer extends IntegerDeserializer {
+ public Offset_B12Deserializer() {
+ super(Offset_B12.class);
+ }
+
+ @Override
+ protected Offset_B12 construct() {
+ return new Offset_B12();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B13.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B13.java
new file mode 100644
index 000000000..c022692d7
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B13.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Offset_B13.Offset_B13Deserializer.class)
+public class Offset_B13 extends Asn1Integer {
+
+ public Offset_B13() {
+ super(-4096L, 4095L);
+ }
+
+ @JsonCreator
+ public Offset_B13(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Offset_B13Deserializer extends IntegerDeserializer {
+ public Offset_B13Deserializer() {
+ super(Offset_B13.class);
+ }
+
+ @Override
+ protected Offset_B13 construct() {
+ return new Offset_B13();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B14.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B14.java
new file mode 100644
index 000000000..c11562014
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B14.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Offset_B14.Offset_B14Deserializer.class)
+public class Offset_B14 extends Asn1Integer {
+
+ public Offset_B14() {
+ super(-8192L, 8191L);
+ }
+
+ @JsonCreator
+ public Offset_B14(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Offset_B14Deserializer extends IntegerDeserializer {
+ public Offset_B14Deserializer() {
+ super(Offset_B14.class);
+ }
+
+ @Override
+ protected Offset_B14 construct() {
+ return new Offset_B14();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B16.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B16.java
new file mode 100644
index 000000000..a43cb611d
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Offset_B16.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Offset_B16.Offset_B16Deserializer.class)
+public class Offset_B16 extends Asn1Integer {
+
+ public Offset_B16() {
+ super(-32768L, 32767L);
+ }
+
+ @JsonCreator
+ public Offset_B16(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Offset_B16Deserializer extends IntegerDeserializer {
+ public Offset_B16Deserializer() {
+ super(Offset_B16.class);
+ }
+
+ @Override
+ protected Offset_B16 construct() {
+ return new Offset_B16();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Position3D.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Position3D.java
new file mode 100644
index 000000000..fa2e7d007
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Position3D.java
@@ -0,0 +1,65 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_Position3D;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Position3D extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lat")
+ @JsonProperty("lat")
+ private Latitude lat;
+ @Asn1Property(tag = 1, name = "long")
+ @JsonProperty("long")
+ private Longitude long_;
+ @Asn1Property(tag = 2, name = "elevation", optional = true)
+ @JsonProperty("elevation")
+ private Elevation elevation;
+ @Asn1Property(tag = 3, name = "regional", optional = true)
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_Position3D.class, 1L, 4L);
+ }
+ }
+
+ Position3D() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegionId.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegionId.java
new file mode 100644
index 000000000..2a7f9ee57
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegionId.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = RegionId.RegionIdDeserializer.class)
+public class RegionId extends Asn1Integer {
+
+ public RegionId() {
+ super(0L, 255L);
+ }
+
+ @JsonCreator
+ public RegionId(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class RegionIdDeserializer extends IntegerDeserializer {
+ public RegionIdDeserializer() {
+ super(RegionId.class);
+ }
+
+ @Override
+ protected RegionId construct() {
+ return new RegionId();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegionalExtension.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegionalExtension.java
new file mode 100644
index 000000000..46ddec790
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegionalExtension.java
@@ -0,0 +1,66 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+abstract public class RegionalExtension extends Asn1Sequence {
+
+ @JsonIgnore
+ final protected RegionId regionId;
+ @JsonIgnore
+ final protected String name;
+ private TValue regExtValue;
+ public final static String INFORMATION_OBJECT_CLASS = "REG_EXT_ID_AND_TYPE";
+
+ public RegionId getRegionId() {
+ return regionId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @JsonProperty("regionId")
+ public String getIdString() {
+ return regionId.toString();
+ }
+
+ public TValue getRegExtValue() {
+ return regExtValue;
+ }
+
+ public void setRegExtValue(TValue regExtValue) {
+ this.regExtValue = regExtValue;
+ }
+
+ public RegionalExtension(int id, String name) {
+ super(true);
+ var theId = new RegionId();
+ theId.setValue(id);
+ this.regionId = theId;
+ this.name = name;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegulatorySpeedLimit.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegulatorySpeedLimit.java
new file mode 100644
index 000000000..a1420bfa3
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RegulatorySpeedLimit.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class RegulatorySpeedLimit extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "type")
+ @JsonProperty("type")
+ private SpeedLimitType type;
+ @Asn1Property(tag = 1, name = "speed")
+ @JsonProperty("speed")
+ private Velocity speed;
+
+ RegulatorySpeedLimit() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadRegulatorID.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadRegulatorID.java
new file mode 100644
index 000000000..aaa28cee9
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadRegulatorID.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = RoadRegulatorID.RoadRegulatorIDDeserializer.class)
+public class RoadRegulatorID extends Asn1Integer {
+
+ public RoadRegulatorID() {
+ super(0L, 65535L);
+ }
+
+ @JsonCreator
+ public RoadRegulatorID(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class RoadRegulatorIDDeserializer extends IntegerDeserializer {
+ public RoadRegulatorIDDeserializer() {
+ super(RoadRegulatorID.class);
+ }
+
+ @Override
+ protected RoadRegulatorID construct() {
+ return new RoadRegulatorID();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadSegmentID.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadSegmentID.java
new file mode 100644
index 000000000..b0b71f2fe
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadSegmentID.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = RoadSegmentID.RoadSegmentIDDeserializer.class)
+public class RoadSegmentID extends Asn1Integer {
+
+ public RoadSegmentID() {
+ super(0L, 65535L);
+ }
+
+ @JsonCreator
+ public RoadSegmentID(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class RoadSegmentIDDeserializer extends IntegerDeserializer {
+ public RoadSegmentIDDeserializer() {
+ super(RoadSegmentID.class);
+ }
+
+ @Override
+ protected RoadSegmentID construct() {
+ return new RoadSegmentID();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadSegmentReferenceID.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadSegmentReferenceID.java
new file mode 100644
index 000000000..67240b99e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadSegmentReferenceID.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class RoadSegmentReferenceID extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "region", optional = true)
+ @JsonProperty("region")
+ private RoadRegulatorID region;
+ @Asn1Property(tag = 1, name = "id")
+ @JsonProperty("id")
+ private RoadSegmentID id;
+
+ RoadSegmentReferenceID() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadwayCrownAngle.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadwayCrownAngle.java
new file mode 100644
index 000000000..7e8499597
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/RoadwayCrownAngle.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = RoadwayCrownAngle.RoadwayCrownAngleDeserializer.class)
+public class RoadwayCrownAngle extends Asn1Integer {
+
+ public RoadwayCrownAngle() {
+ super(-128L, 127L);
+ }
+
+ @JsonCreator
+ public RoadwayCrownAngle(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class RoadwayCrownAngleDeserializer extends IntegerDeserializer {
+ public RoadwayCrownAngleDeserializer() {
+ super(RoadwayCrownAngle.class);
+ }
+
+ @Override
+ protected RoadwayCrownAngle construct() {
+ return new RoadwayCrownAngle();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SSPindex.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SSPindex.java
new file mode 100644
index 000000000..44bf449eb
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SSPindex.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = SSPindex.SSPindexDeserializer.class)
+public class SSPindex extends Asn1Integer {
+
+ public SSPindex() {
+ super(0L, 31L);
+ }
+
+ @JsonCreator
+ public SSPindex(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class SSPindexDeserializer extends IntegerDeserializer {
+ public SSPindexDeserializer() {
+ super(SSPindex.class);
+ }
+
+ @Override
+ protected SSPindex construct() {
+ return new SSPindex();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Scale_B12.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Scale_B12.java
new file mode 100644
index 000000000..3aae74343
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Scale_B12.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Scale_B12.Scale_B12Deserializer.class)
+public class Scale_B12 extends Asn1Integer {
+
+ public Scale_B12() {
+ super(-2048L, 2047L);
+ }
+
+ @JsonCreator
+ public Scale_B12(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Scale_B12Deserializer extends IntegerDeserializer {
+ public Scale_B12Deserializer() {
+ super(Scale_B12.class);
+ }
+
+ @Override
+ protected Scale_B12 construct() {
+ return new Scale_B12();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXY.java
new file mode 100644
index 000000000..763cb2586
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXY.java
@@ -0,0 +1,103 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = SegmentAttributeXYSerializer.class)
+@JsonDeserialize(using = SegmentAttributeXYDeserializer.class)
+public enum SegmentAttributeXY implements Asn1Enumerated {
+ RESERVED(0, "reserved"), DONOTBLOCK(1, "doNotBlock"), WHITELINE(2, "whiteLine"), MERGINGLANELEFT(3,
+ "mergingLaneLeft"), MERGINGLANERIGHT(4, "mergingLaneRight"), CURBONLEFT(5, "curbOnLeft"), CURBONRIGHT(6,
+ "curbOnRight"), LOADINGZONEONLEFT(7, "loadingzoneOnLeft"), LOADINGZONEONRIGHT(8,
+ "loadingzoneOnRight"), TURNOUTPOINTONLEFT(9, "turnOutPointOnLeft"), TURNOUTPOINTONRIGHT(10,
+ "turnOutPointOnRight"), ADJACENTPARKINGONLEFT(11,
+ "adjacentParkingOnLeft"), ADJACENTPARKINGONRIGHT(12,
+ "adjacentParkingOnRight"), ADJACENTBIKELANEONLEFT(13,
+ "adjacentBikeLaneOnLeft"), ADJACENTBIKELANEONRIGHT(14,
+ "adjacentBikeLaneOnRight"), SHAREDBIKELANE(15,
+ "sharedBikeLane"), BIKEBOXINFRONT(16,
+ "bikeBoxInFront"), TRANSITSTOPONLEFT(
+ 17,
+ "transitStopOnLeft"), TRANSITSTOPONRIGHT(
+ 18,
+ "transitStopOnRight"), TRANSITSTOPINLANE(
+ 19,
+ "transitStopInLane"), SHAREDWITHTRACKEDVEHICLE(
+ 20,
+ "sharedWithTrackedVehicle"), SAFEISLAND(
+ 21,
+ "safeIsland"), LOWCURBSPRESENT(
+ 22,
+ "lowCurbsPresent"), RUMBLESTRIPPRESENT(
+ 23,
+ "rumbleStripPresent"), AUDIBLESIGNALINGPRESENT(
+ 24,
+ "audibleSignalingPresent"), ADAPTIVETIMINGPRESENT(
+ 25,
+ "adaptiveTimingPresent"), RFSIGNALREQUESTPRESENT(
+ 26,
+ "rfSignalRequestPresent"), PARTIALCURBINTRUSION(
+ 27,
+ "partialCurbIntrusion"), TAPERTOLEFT(
+ 28,
+ "taperToLeft"), TAPERTORIGHT(
+ 29,
+ "taperToRight"), TAPERTOCENTERLINE(
+ 30,
+ "taperToCenterLine"), PARALLELPARKING(
+ 31,
+ "parallelParking"), HEADINPARKING(
+ 32,
+ "headInParking"), FREEPARKING(
+ 33,
+ "freeParking"), TIMERESTRICTIONSONPARKING(
+ 34,
+ "timeRestrictionsOnParking"), COSTTOPARK(
+ 35,
+ "costToPark"), MIDBLOCKCURBPRESENT(
+ 36,
+ "midBlockCurbPresent"), UNEVENPAVEMENTPRESENT(
+ 37,
+ "unEvenPavementPresent");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private SegmentAttributeXY(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 37;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYDeserializer.java
new file mode 100644
index 000000000..685cb5c21
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class SegmentAttributeXYDeserializer extends EnumeratedDeserializer {
+
+ SegmentAttributeXYDeserializer() {
+ super(SegmentAttributeXY.class);
+ }
+
+ @Override
+ protected SegmentAttributeXY[] listEnumValues() {
+ return SegmentAttributeXY.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYList.java
new file mode 100644
index 000000000..59ba04c61
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYList.java
@@ -0,0 +1,54 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.serialization.SequenceOfEnumeratedDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class SegmentAttributeXYList extends Asn1SequenceOf {
+
+ SegmentAttributeXYList() {
+ super(SegmentAttributeXY.class, 1L, 8L);
+ }
+
+ public static class SegmentAttributeXYListDeserializer
+ extends
+ SequenceOfEnumeratedDeserializer {
+ public SegmentAttributeXYListDeserializer() {
+ super(SegmentAttributeXYList.class, SegmentAttributeXY.class);
+ }
+
+ @Override
+ protected SegmentAttributeXY[] listEnumValues() {
+ return SegmentAttributeXY.values();
+ }
+
+ @Override
+ protected SegmentAttributeXYList construct() {
+ return new SegmentAttributeXYList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYSerializer.java
new file mode 100644
index 000000000..44a56038e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SegmentAttributeXYSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class SegmentAttributeXYSerializer extends EnumeratedSerializer {
+
+ SegmentAttributeXYSerializer() {
+ super(SegmentAttributeXY.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitList.java
new file mode 100644
index 000000000..26a3907d9
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitList.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class SpeedLimitList extends Asn1SequenceOf {
+
+ SpeedLimitList() {
+ super(RegulatorySpeedLimit.class, 1L, 9L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitType.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitType.java
new file mode 100644
index 000000000..2d78ff819
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitType.java
@@ -0,0 +1,59 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = SpeedLimitTypeSerializer.class)
+@JsonDeserialize(using = SpeedLimitTypeDeserializer.class)
+public enum SpeedLimitType implements Asn1Enumerated {
+ UNKNOWN(0, "unknown"), MAXSPEEDINSCHOOLZONE(1, "maxSpeedInSchoolZone"), MAXSPEEDINSCHOOLZONEWHENCHILDRENAREPRESENT(
+ 2, "maxSpeedInSchoolZoneWhenChildrenArePresent"), MAXSPEEDINCONSTRUCTIONZONE(3,
+ "maxSpeedInConstructionZone"), VEHICLEMINSPEED(4, "vehicleMinSpeed"), VEHICLEMAXSPEED(5,
+ "vehicleMaxSpeed"), VEHICLENIGHTMAXSPEED(6, "vehicleNightMaxSpeed"), TRUCKMINSPEED(7,
+ "truckMinSpeed"), TRUCKMAXSPEED(8, "truckMaxSpeed"), TRUCKNIGHTMAXSPEED(9,
+ "truckNightMaxSpeed"), VEHICLESWITHTRAILERSMINSPEED(10,
+ "vehiclesWithTrailersMinSpeed"), VEHICLESWITHTRAILERSMAXSPEED(11,
+ "vehiclesWithTrailersMaxSpeed"), VEHICLESWITHTRAILERSNIGHTMAXSPEED(
+ 12, "vehiclesWithTrailersNightMaxSpeed");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private SpeedLimitType(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 12;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitTypeDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitTypeDeserializer.java
new file mode 100644
index 000000000..f7bcb8f59
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitTypeDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class SpeedLimitTypeDeserializer extends EnumeratedDeserializer {
+
+ SpeedLimitTypeDeserializer() {
+ super(SpeedLimitType.class);
+ }
+
+ @Override
+ protected SpeedLimitType[] listEnumValues() {
+ return SpeedLimitType.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitTypeSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitTypeSerializer.java
new file mode 100644
index 000000000..902011806
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/SpeedLimitTypeSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class SpeedLimitTypeSerializer extends EnumeratedSerializer {
+
+ SpeedLimitTypeSerializer() {
+ super(SpeedLimitType.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Velocity.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Velocity.java
new file mode 100644
index 000000000..bf1cb2bcf
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/common/Velocity.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.common;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Velocity.VelocityDeserializer.class)
+public class Velocity extends Asn1Integer {
+
+ public Velocity() {
+ super(0L, 8191L);
+ }
+
+ @JsonCreator
+ public Velocity(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class VelocityDeserializer extends IntegerDeserializer {
+ public VelocityDeserializer() {
+ super(Velocity.class);
+ }
+
+ @Override
+ protected Velocity construct() {
+ return new Velocity();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodes.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodes.java
new file mode 100644
index 000000000..0c2aee157
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodes.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.itis;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = ITIScodes.ITIScodesDeserializer.class)
+public class ITIScodes extends Asn1Integer {
+
+ public ITIScodes() {
+ super(0L, 65535L);
+ }
+
+ @JsonCreator
+ public ITIScodes(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class ITIScodesDeserializer extends IntegerDeserializer {
+ public ITIScodesDeserializer() {
+ super(ITIScodes.class);
+ }
+
+ @Override
+ protected ITIScodes construct() {
+ return new ITIScodes();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodesAndText.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodesAndText.java
new file mode 100644
index 000000000..49932c026
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodesAndText.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.itis;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class ITIScodesAndText extends Asn1SequenceOf {
+
+ ITIScodesAndText() {
+ super(ITIScodesAndTextSequence.class, 1L, 100L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodesAndTextSequence.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodesAndTextSequence.java
new file mode 100644
index 000000000..ff7f8459e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIScodesAndTextSequence.java
@@ -0,0 +1,64 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.itis;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class ITIScodesAndTextSequence extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "item")
+ @JsonProperty("item")
+ private ItemChoice item;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class ItemChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "itis")
+ @JsonProperty("itis")
+ private ITIScodes itis;
+ @Asn1Property(tag = 1, name = "text")
+ @JsonProperty("text")
+ private ITIStext text;
+
+ ItemChoice() {
+ super(false);
+ }
+ }
+
+ ITIScodesAndTextSequence() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIStext.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIStext.java
new file mode 100644
index 000000000..c5fa99f4f
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/itis/ITIStext.java
@@ -0,0 +1,39 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.itis;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import us.dot.its.jpo.ode.plugin.types.IA5String;
+
+public class ITIStext extends IA5String {
+
+ public ITIStext() {
+ super(1, 500);
+ }
+
+ @JsonCreator
+ public ITIStext(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_ComputedLane.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_ComputedLane.java
new file mode 100644
index 000000000..8c3920fb7
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_ComputedLane.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+
+@JsonInclude(Include.NON_NULL)
+abstract public class Reg_ComputedLane extends RegionalExtension {
+
+ public Reg_ComputedLane(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_GeographicalPath.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_GeographicalPath.java
new file mode 100644
index 000000000..98d8ab03c
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_GeographicalPath.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+
+@JsonInclude(Include.NON_NULL)
+abstract public class Reg_GeographicalPath extends RegionalExtension {
+
+ public Reg_GeographicalPath(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_GeometricProjection.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_GeometricProjection.java
new file mode 100644
index 000000000..b6697ef74
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_GeometricProjection.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+
+@JsonInclude(Include.NON_NULL)
+abstract public class Reg_GeometricProjection extends RegionalExtension {
+
+ public Reg_GeometricProjection(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_LaneDataAttribute.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_LaneDataAttribute.java
new file mode 100644
index 000000000..f40f2063c
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_LaneDataAttribute.java
@@ -0,0 +1,47 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
+import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1ParameterizedTypes;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1ParameterizedTypes.IdType;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+import us.dot.its.jpo.ode.plugin.j2735.addgrpb.LaneDataAttribute_addGrpBReg_LaneDataAttribute;
+
+@JsonInclude(Include.NON_NULL)
+@JsonTypeInfo(use = Id.NAME, include = As.EXISTING_PROPERTY, property = "regionId")
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = LaneDataAttribute_addGrpBReg_LaneDataAttribute.class, name = "2")})
+@Asn1ParameterizedTypes(idProperty = "regionId", idType = IdType.INTEGER, valueProperty = "regExtValue", value = {
+ @Asn1ParameterizedTypes.Type(value = LaneDataAttribute_addGrpBReg_LaneDataAttribute.class, intId = 2)})
+abstract public class Reg_LaneDataAttribute extends RegionalExtension {
+
+ public Reg_LaneDataAttribute(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeAttributeSetLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeAttributeSetLL.java
new file mode 100644
index 000000000..c15b304da
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeAttributeSetLL.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+
+@JsonInclude(Include.NON_NULL)
+abstract public class Reg_NodeAttributeSetLL extends RegionalExtension {
+
+ public Reg_NodeAttributeSetLL(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeAttributeSetXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeAttributeSetXY.java
new file mode 100644
index 000000000..0b32ef5b8
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeAttributeSetXY.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+
+@JsonInclude(Include.NON_NULL)
+abstract public class Reg_NodeAttributeSetXY extends RegionalExtension {
+
+ public Reg_NodeAttributeSetXY(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeOffsetPointLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeOffsetPointLL.java
new file mode 100644
index 000000000..278223d23
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeOffsetPointLL.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+
+@JsonInclude(Include.NON_NULL)
+abstract public class Reg_NodeOffsetPointLL extends RegionalExtension {
+
+ public Reg_NodeOffsetPointLL(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeOffsetPointXY.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeOffsetPointXY.java
new file mode 100644
index 000000000..727bc3433
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_NodeOffsetPointXY.java
@@ -0,0 +1,47 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
+import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1ParameterizedTypes;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1ParameterizedTypes.IdType;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+import us.dot.its.jpo.ode.plugin.j2735.addgrpb.NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY;
+
+@JsonInclude(Include.NON_NULL)
+@JsonTypeInfo(use = Id.NAME, include = As.EXISTING_PROPERTY, property = "regionId")
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY.class, name = "2")})
+@Asn1ParameterizedTypes(idProperty = "regionId", idType = IdType.INTEGER, valueProperty = "regExtValue", value = {
+ @Asn1ParameterizedTypes.Type(value = NodeOffsetPointXY_addGrpBReg_NodeOffsetPointXY.class, intId = 2)})
+abstract public class Reg_NodeOffsetPointXY extends RegionalExtension {
+
+ public Reg_NodeOffsetPointXY(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_Position3D.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_Position3D.java
new file mode 100644
index 000000000..b585b9da1
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_Position3D.java
@@ -0,0 +1,49 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
+import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1ParameterizedTypes;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1ParameterizedTypes.IdType;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+import us.dot.its.jpo.ode.plugin.j2735.addgrpb.Position3D_addGrpBReg_Position3D;
+import us.dot.its.jpo.ode.plugin.j2735.addgrpc.Position3D_addGrpCReg_Position3D;
+
+@JsonInclude(Include.NON_NULL)
+@JsonTypeInfo(use = Id.NAME, include = As.EXISTING_PROPERTY, property = "regionId")
+@JsonSubTypes({@JsonSubTypes.Type(value = Position3D_addGrpBReg_Position3D.class, name = "2"),
+ @JsonSubTypes.Type(value = Position3D_addGrpCReg_Position3D.class, name = "3")})
+@Asn1ParameterizedTypes(idProperty = "regionId", idType = IdType.INTEGER, valueProperty = "regExtValue", value = {
+ @Asn1ParameterizedTypes.Type(value = Position3D_addGrpBReg_Position3D.class, intId = 2),
+ @Asn1ParameterizedTypes.Type(value = Position3D_addGrpCReg_Position3D.class, intId = 3)})
+abstract public class Reg_Position3D extends RegionalExtension {
+
+ public Reg_Position3D(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_TravelerInformation.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_TravelerInformation.java
new file mode 100644
index 000000000..6921451e9
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/region/Reg_TravelerInformation.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.region;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.j2735.common.RegionalExtension;
+
+@JsonInclude(Include.NON_NULL)
+abstract public class Reg_TravelerInformation extends RegionalExtension {
+
+ public Reg_TravelerInformation(int id, String name) {
+ super(id, name);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Circle.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Circle.java
new file mode 100644
index 000000000..44835164e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Circle.java
@@ -0,0 +1,54 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.Position3D;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Circle extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "center")
+ @JsonProperty("center")
+ private Position3D center;
+ @Asn1Property(tag = 1, name = "radius")
+ @JsonProperty("radius")
+ private Radius_B12 radius;
+ @Asn1Property(tag = 2, name = "units")
+ @JsonProperty("units")
+ private DistanceUnits units;
+
+ Circle() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUse.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUse.java
new file mode 100644
index 000000000..902b5e200
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUse.java
@@ -0,0 +1,51 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = DirectionOfUseSerializer.class)
+@JsonDeserialize(using = DirectionOfUseDeserializer.class)
+public enum DirectionOfUse implements Asn1Enumerated {
+ UNAVAILABLE(0, "unavailable"), FORWARD(1, "forward"), REVERSE(2, "reverse"), BOTH(3, "both");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private DirectionOfUse(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 3;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUseDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUseDeserializer.java
new file mode 100644
index 000000000..f4c534505
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUseDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class DirectionOfUseDeserializer extends EnumeratedDeserializer {
+
+ DirectionOfUseDeserializer() {
+ super(DirectionOfUse.class);
+ }
+
+ @Override
+ protected DirectionOfUse[] listEnumValues() {
+ return DirectionOfUse.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUseSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUseSerializer.java
new file mode 100644
index 000000000..2dfb054c4
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DirectionOfUseSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class DirectionOfUseSerializer extends EnumeratedSerializer {
+
+ DirectionOfUseSerializer() {
+ super(DirectionOfUse.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnits.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnits.java
new file mode 100644
index 000000000..e68c69632
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnits.java
@@ -0,0 +1,52 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = DistanceUnitsSerializer.class)
+@JsonDeserialize(using = DistanceUnitsDeserializer.class)
+public enum DistanceUnits implements Asn1Enumerated {
+ CENTIMETER(0, "centimeter"), CM2_5(1, "cm2-5"), DECIMETER(2, "decimeter"), METER(3, "meter"), KILOMETER(4,
+ "kilometer"), FOOT(5, "foot"), YARD(6, "yard"), MILE(7, "mile");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private DistanceUnits(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 7;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnitsDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnitsDeserializer.java
new file mode 100644
index 000000000..d516cef3a
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnitsDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class DistanceUnitsDeserializer extends EnumeratedDeserializer {
+
+ DistanceUnitsDeserializer() {
+ super(DistanceUnits.class);
+ }
+
+ @Override
+ protected DistanceUnits[] listEnumValues() {
+ return DistanceUnits.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnitsSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnitsSerializer.java
new file mode 100644
index 000000000..7fdcc3f1e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/DistanceUnitsSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class DistanceUnitsSerializer extends EnumeratedSerializer {
+
+ DistanceUnitsSerializer() {
+ super(DistanceUnits.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ExitService.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ExitService.java
new file mode 100644
index 000000000..3077251ad
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ExitService.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class ExitService extends Asn1SequenceOf {
+
+ ExitService() {
+ super(ExitServiceSequence.class, 1L, 16L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ExitServiceSequence.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ExitServiceSequence.java
new file mode 100644
index 000000000..ee43415f2
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ExitServiceSequence.java
@@ -0,0 +1,65 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.itis.ITIScodes;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class ExitServiceSequence extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "item")
+ @JsonProperty("item")
+ private ItemChoice item;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class ItemChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "itis")
+ @JsonProperty("itis")
+ private ITIScodes itis;
+ @Asn1Property(tag = 1, name = "text")
+ @JsonProperty("text")
+ private ITIStextPhrase text;
+
+ ItemChoice() {
+ super(false);
+ }
+ }
+
+ ExitServiceSequence() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GenericSignage.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GenericSignage.java
new file mode 100644
index 000000000..f4138128b
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GenericSignage.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class GenericSignage extends Asn1SequenceOf {
+
+ GenericSignage() {
+ super(GenericSignageSequence.class, 1L, 16L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GenericSignageSequence.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GenericSignageSequence.java
new file mode 100644
index 000000000..d795ed5fd
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GenericSignageSequence.java
@@ -0,0 +1,65 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.itis.ITIScodes;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class GenericSignageSequence extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "item")
+ @JsonProperty("item")
+ private ItemChoice item;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class ItemChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "itis")
+ @JsonProperty("itis")
+ private ITIScodes itis;
+ @Asn1Property(tag = 1, name = "text")
+ @JsonProperty("text")
+ private ITIStextPhrase text;
+
+ ItemChoice() {
+ super(false);
+ }
+ }
+
+ GenericSignageSequence() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GeographicalPath.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GeographicalPath.java
new file mode 100644
index 000000000..3c0e9ebeb
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GeographicalPath.java
@@ -0,0 +1,102 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.*;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_GeographicalPath;
+import us.dot.its.jpo.ode.plugin.types.Asn1Boolean;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class GeographicalPath extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "name", optional = true)
+ @JsonProperty("name")
+ private DescriptiveName name;
+ @Asn1Property(tag = 1, name = "id", optional = true)
+ @JsonProperty("id")
+ private RoadSegmentReferenceID id;
+ @Asn1Property(tag = 2, name = "anchor", optional = true)
+ @JsonProperty("anchor")
+ private Position3D anchor;
+ @Asn1Property(tag = 3, name = "laneWidth", optional = true)
+ @JsonProperty("laneWidth")
+ private LaneWidth laneWidth;
+ @Asn1Property(tag = 4, name = "directionality", optional = true)
+ @JsonProperty("directionality")
+ private DirectionOfUse directionality;
+ @Asn1Property(tag = 5, name = "closedPath", optional = true)
+ @JsonProperty("closedPath")
+ private Asn1Boolean closedPath;
+ @Asn1Property(tag = 6, name = "direction", optional = true)
+ @JsonProperty("direction")
+ private HeadingSlice direction;
+ @Asn1Property(tag = 7, name = "description", optional = true)
+ @JsonProperty("description")
+ private DescriptionChoice description;
+ @Asn1Property(tag = 8, name = "regional", optional = true)
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class DescriptionChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "path")
+ @JsonProperty("path")
+ private OffsetSystem path;
+ @Asn1Property(tag = 1, name = "geometry")
+ @JsonProperty("geometry")
+ private GeometricProjection geometry;
+ @Asn1Property(tag = 2, name = "oldRegion")
+ @JsonProperty("oldRegion")
+ private ValidRegion oldRegion;
+
+ DescriptionChoice() {
+ super(true);
+ }
+ }
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_GeographicalPath.class, 1L, 4L);
+ }
+ }
+
+ GeographicalPath() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GeometricProjection.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GeometricProjection.java
new file mode 100644
index 000000000..4b7aae252
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/GeometricProjection.java
@@ -0,0 +1,71 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.Extent;
+import us.dot.its.jpo.ode.plugin.j2735.common.HeadingSlice;
+import us.dot.its.jpo.ode.plugin.j2735.common.LaneWidth;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_GeometricProjection;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class GeometricProjection extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "direction")
+ @JsonProperty("direction")
+ private HeadingSlice direction;
+ @Asn1Property(tag = 1, name = "extent", optional = true)
+ @JsonProperty("extent")
+ private Extent extent;
+ @Asn1Property(tag = 2, name = "laneWidth", optional = true)
+ @JsonProperty("laneWidth")
+ private LaneWidth laneWidth;
+ @Asn1Property(tag = 3, name = "circle")
+ @JsonProperty("circle")
+ private Circle circle;
+ @Asn1Property(tag = 4, name = "regional", optional = true)
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_GeometricProjection.class, 1L, 4L);
+ }
+ }
+
+ GeometricProjection() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ITIStextPhrase.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ITIStextPhrase.java
new file mode 100644
index 000000000..db066f0c9
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ITIStextPhrase.java
@@ -0,0 +1,39 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import us.dot.its.jpo.ode.plugin.types.IA5String;
+
+public class ITIStextPhrase extends IA5String {
+
+ public ITIStextPhrase() {
+ super(1, 16);
+ }
+
+ @JsonCreator
+ public ITIStextPhrase(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCode.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCode.java
new file mode 100644
index 000000000..f14d62179
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCode.java
@@ -0,0 +1,52 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = MUTCDCodeSerializer.class)
+@JsonDeserialize(using = MUTCDCodeDeserializer.class)
+public enum MUTCDCode implements Asn1Enumerated {
+ NONE(0, "none"), REGULATORY(1, "regulatory"), WARNING(2, "warning"), MAINTENANCE(3,
+ "maintenance"), MOTORISTSERVICE(4, "motoristService"), GUIDE(5, "guide"), REC(6, "rec");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private MUTCDCode(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 6;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCodeDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCodeDeserializer.java
new file mode 100644
index 000000000..31f24e527
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCodeDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class MUTCDCodeDeserializer extends EnumeratedDeserializer {
+
+ MUTCDCodeDeserializer() {
+ super(MUTCDCode.class);
+ }
+
+ @Override
+ protected MUTCDCode[] listEnumValues() {
+ return MUTCDCode.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCodeSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCodeSerializer.java
new file mode 100644
index 000000000..d9418e9ad
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MUTCDCodeSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class MUTCDCodeSerializer extends EnumeratedSerializer {
+
+ MUTCDCodeSerializer() {
+ super(MUTCDCode.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MinutesDuration.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MinutesDuration.java
new file mode 100644
index 000000000..ea4e0e390
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MinutesDuration.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = MinutesDuration.MinutesDurationDeserializer.class)
+public class MinutesDuration extends Asn1Integer {
+
+ public MinutesDuration() {
+ super(0L, 32000L);
+ }
+
+ @JsonCreator
+ public MinutesDuration(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class MinutesDurationDeserializer extends IntegerDeserializer {
+ public MinutesDurationDeserializer() {
+ super(MinutesDuration.class);
+ }
+
+ @Override
+ protected MinutesDuration construct() {
+ return new MinutesDuration();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MsgCRC.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MsgCRC.java
new file mode 100644
index 000000000..54d976060
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/MsgCRC.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import us.dot.its.jpo.ode.plugin.types.Asn1OctetString;
+
+public class MsgCRC extends Asn1OctetString {
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+ public MsgCRC() {
+ super(2, 2);
+ }
+
+ @JsonCreator
+ public MsgCRC(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLL.java
new file mode 100644
index 000000000..02f729046
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLL.java
@@ -0,0 +1,55 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = NodeAttributeLLSerializer.class)
+@JsonDeserialize(using = NodeAttributeLLDeserializer.class)
+public enum NodeAttributeLL implements Asn1Enumerated {
+ RESERVED(0, "reserved"), STOPLINE(1, "stopLine"), ROUNDEDCAPSTYLEA(2, "roundedCapStyleA"), ROUNDEDCAPSTYLEB(3,
+ "roundedCapStyleB"), MERGEPOINT(4, "mergePoint"), DIVERGEPOINT(5, "divergePoint"), DOWNSTREAMSTOPLINE(6,
+ "downstreamStopLine"), DOWNSTREAMSTARTNODE(7, "downstreamStartNode"), CLOSEDTOTRAFFIC(8,
+ "closedToTraffic"), SAFEISLAND(9, "safeIsland"), CURBPRESENTATSTEPOFF(10,
+ "curbPresentAtStepOff"), HYDRANTPRESENT(11, "hydrantPresent");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private NodeAttributeLL(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 11;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLDeserializer.java
new file mode 100644
index 000000000..7621e8150
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class NodeAttributeLLDeserializer extends EnumeratedDeserializer {
+
+ NodeAttributeLLDeserializer() {
+ super(NodeAttributeLL.class);
+ }
+
+ @Override
+ protected NodeAttributeLL[] listEnumValues() {
+ return NodeAttributeLL.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLList.java
new file mode 100644
index 000000000..f8a63b584
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLList.java
@@ -0,0 +1,54 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.serialization.SequenceOfEnumeratedDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class NodeAttributeLLList extends Asn1SequenceOf {
+
+ NodeAttributeLLList() {
+ super(NodeAttributeLL.class, 1L, 8L);
+ }
+
+ public static class NodeAttributeLLListDeserializer
+ extends
+ SequenceOfEnumeratedDeserializer {
+ public NodeAttributeLLListDeserializer() {
+ super(NodeAttributeLLList.class, NodeAttributeLL.class);
+ }
+
+ @Override
+ protected NodeAttributeLL[] listEnumValues() {
+ return NodeAttributeLL.values();
+ }
+
+ @Override
+ protected NodeAttributeLLList construct() {
+ return new NodeAttributeLLList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLSerializer.java
new file mode 100644
index 000000000..508fcb134
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeLLSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class NodeAttributeLLSerializer extends EnumeratedSerializer {
+
+ NodeAttributeLLSerializer() {
+ super(NodeAttributeLL.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeSetLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeSetLL.java
new file mode 100644
index 000000000..405183c27
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeAttributeSetLL.java
@@ -0,0 +1,83 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.LaneDataAttributeList;
+import us.dot.its.jpo.ode.plugin.j2735.common.Offset_B10;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_NodeAttributeSetLL;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class NodeAttributeSetLL extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "localNode", optional = true)
+ @JsonProperty("localNode")
+ @JsonDeserialize(using = NodeAttributeLLList.NodeAttributeLLListDeserializer.class)
+ private NodeAttributeLLList localNode;
+ @Asn1Property(tag = 1, name = "disabled", optional = true)
+ @JsonProperty("disabled")
+ @JsonDeserialize(using = SegmentAttributeLLList.SegmentAttributeLLListDeserializer.class)
+ private SegmentAttributeLLList disabled;
+ @Asn1Property(tag = 2, name = "enabled", optional = true)
+ @JsonProperty("enabled")
+ @JsonDeserialize(using = SegmentAttributeLLList.SegmentAttributeLLListDeserializer.class)
+ private SegmentAttributeLLList enabled;
+ @Asn1Property(tag = 3, name = "data", optional = true)
+ @JsonProperty("data")
+ @JsonSerialize(using = LaneDataAttributeList.LaneDataAttributeListSerializer.class)
+ @JsonDeserialize(using = LaneDataAttributeList.LaneDataAttributeListDeserializer.class)
+ private LaneDataAttributeList data;
+ @Asn1Property(tag = 4, name = "dWidth", optional = true)
+ @JsonProperty("dWidth")
+ private Offset_B10 dWidth;
+ @Asn1Property(tag = 5, name = "dElevation", optional = true)
+ @JsonProperty("dElevation")
+ private Offset_B10 dElevation;
+ @Asn1Property(tag = 6, name = "regional", optional = true)
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_NodeAttributeSetLL.class, 1L, 4L);
+ }
+ }
+
+ NodeAttributeSetLL() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeLL.java
new file mode 100644
index 000000000..7247ae614
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeLL.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class NodeLL extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "delta")
+ @JsonProperty("delta")
+ private NodeOffsetPointLL delta;
+ @Asn1Property(tag = 1, name = "attributes", optional = true)
+ @JsonProperty("attributes")
+ private NodeAttributeSetLL attributes;
+
+ NodeLL() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeListLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeListLL.java
new file mode 100644
index 000000000..c5f98d200
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeListLL.java
@@ -0,0 +1,49 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+
+@Getter
+@Setter
+@JsonInclude(Include.NON_NULL)
+public class NodeListLL extends Asn1Choice {
+
+ @Asn1Property(tag = 0, name = "nodes")
+ @JsonProperty("nodes")
+ @JacksonXmlElementWrapper(localName = "nodes")
+ @JacksonXmlProperty(localName = "NodeLL")
+ private NodeSetLL nodes;
+
+ NodeListLL() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeOffsetPointLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeOffsetPointLL.java
new file mode 100644
index 000000000..c3f131082
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeOffsetPointLL.java
@@ -0,0 +1,68 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.Node_LLmD_64b;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_NodeOffsetPointLL;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+
+@Getter
+@Setter
+@JsonInclude(Include.NON_NULL)
+public class NodeOffsetPointLL extends Asn1Choice {
+
+ @Asn1Property(tag = 0, name = "node-LL1")
+ @JsonProperty("node-LL1")
+ private Node_LL_24B node_LL1;
+ @Asn1Property(tag = 1, name = "node-LL2")
+ @JsonProperty("node-LL2")
+ private Node_LL_28B node_LL2;
+ @Asn1Property(tag = 2, name = "node-LL3")
+ @JsonProperty("node-LL3")
+ private Node_LL_32B node_LL3;
+ @Asn1Property(tag = 3, name = "node-LL4")
+ @JsonProperty("node-LL4")
+ private Node_LL_36B node_LL4;
+ @Asn1Property(tag = 4, name = "node-LL5")
+ @JsonProperty("node-LL5")
+ private Node_LL_44B node_LL5;
+ @Asn1Property(tag = 5, name = "node-LL6")
+ @JsonProperty("node-LL6")
+ private Node_LL_48B node_LL6;
+ @Asn1Property(tag = 6, name = "node-LatLon")
+ @JsonProperty("node-LatLon")
+ private Node_LLmD_64b node_LatLon;
+ @Asn1Property(tag = 7, name = "regional")
+ @JsonProperty("regional")
+ private Reg_NodeOffsetPointLL regional;
+
+ NodeOffsetPointLL() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeSetLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeSetLL.java
new file mode 100644
index 000000000..beb77e1fc
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/NodeSetLL.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class NodeSetLL extends Asn1SequenceOf {
+
+ NodeSetLL() {
+ super(NodeLL.class, 2L, 63L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_24B.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_24B.java
new file mode 100644
index 000000000..d18ddfbce
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_24B.java
@@ -0,0 +1,51 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.OffsetLL_B12;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LL_24B extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private OffsetLL_B12 lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private OffsetLL_B12 lat;
+
+ Node_LL_24B() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_28B.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_28B.java
new file mode 100644
index 000000000..eb8294ef1
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_28B.java
@@ -0,0 +1,51 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.OffsetLL_B14;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LL_28B extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private OffsetLL_B14 lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private OffsetLL_B14 lat;
+
+ Node_LL_28B() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_32B.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_32B.java
new file mode 100644
index 000000000..8d128491a
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_32B.java
@@ -0,0 +1,51 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.OffsetLL_B16;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LL_32B extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private OffsetLL_B16 lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private OffsetLL_B16 lat;
+
+ Node_LL_32B() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_36B.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_36B.java
new file mode 100644
index 000000000..439cf372f
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_36B.java
@@ -0,0 +1,51 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.OffsetLL_B18;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LL_36B extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private OffsetLL_B18 lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private OffsetLL_B18 lat;
+
+ Node_LL_36B() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_44B.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_44B.java
new file mode 100644
index 000000000..571ca2a98
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_44B.java
@@ -0,0 +1,51 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.OffsetLL_B22;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LL_44B extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private OffsetLL_B22 lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private OffsetLL_B22 lat;
+
+ Node_LL_44B() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_48B.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_48B.java
new file mode 100644
index 000000000..b93dec8cd
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Node_LL_48B.java
@@ -0,0 +1,51 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.OffsetLL_B24;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class Node_LL_48B extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "lon")
+ @JsonProperty("lon")
+ private OffsetLL_B24 lon;
+ @Asn1Property(tag = 1, name = "lat")
+ @JsonProperty("lat")
+ private OffsetLL_B24 lat;
+
+ Node_LL_48B() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/OffsetSystem.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/OffsetSystem.java
new file mode 100644
index 000000000..ded65d7f4
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/OffsetSystem.java
@@ -0,0 +1,68 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.NodeListXY;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class OffsetSystem extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "scale", optional = true)
+ @JsonProperty("scale")
+ private Zoom scale;
+ @Asn1Property(tag = 1, name = "offset")
+ @JsonProperty("offset")
+ private OffsetChoice offset;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class OffsetChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "xy")
+ @JsonProperty("xy")
+ private NodeListXY xy;
+ @Asn1Property(tag = 1, name = "ll")
+ @JsonProperty("ll")
+ private NodeListLL ll;
+
+ OffsetChoice() {
+ super(false);
+ }
+ }
+
+ OffsetSystem() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Radius_B12.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Radius_B12.java
new file mode 100644
index 000000000..5d75071dd
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Radius_B12.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Radius_B12.Radius_B12Deserializer.class)
+public class Radius_B12 extends Asn1Integer {
+
+ public Radius_B12() {
+ super(0L, 4095L);
+ }
+
+ @JsonCreator
+ public Radius_B12(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class Radius_B12Deserializer extends IntegerDeserializer {
+ public Radius_B12Deserializer() {
+ super(Radius_B12.class);
+ }
+
+ @Override
+ protected Radius_B12 construct() {
+ return new Radius_B12();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionList.java
new file mode 100644
index 000000000..d74e70b05
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionList.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class RegionList extends Asn1SequenceOf {
+
+ RegionList() {
+ super(RegionOffsets.class, 1L, 64L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionOffsets.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionOffsets.java
new file mode 100644
index 000000000..f4f392fd6
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionOffsets.java
@@ -0,0 +1,54 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.OffsetLL_B16;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class RegionOffsets extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "xOffset")
+ @JsonProperty("xOffset")
+ private OffsetLL_B16 xOffset;
+ @Asn1Property(tag = 1, name = "yOffset")
+ @JsonProperty("yOffset")
+ private OffsetLL_B16 yOffset;
+ @Asn1Property(tag = 2, name = "zOffset", optional = true)
+ @JsonProperty("zOffset")
+ private OffsetLL_B16 zOffset;
+
+ RegionOffsets() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionPointSet.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionPointSet.java
new file mode 100644
index 000000000..ad261e6bb
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RegionPointSet.java
@@ -0,0 +1,58 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.Position3D;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class RegionPointSet extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "anchor", optional = true)
+ @JsonProperty("anchor")
+ private Position3D anchor;
+ @Asn1Property(tag = 1, name = "scale", optional = true)
+ @JsonProperty("scale")
+ private Zoom scale;
+ @Asn1Property(tag = 2, name = "nodeList")
+ @JsonProperty("nodeList")
+ @JacksonXmlElementWrapper(localName = "nodeList")
+ @JacksonXmlProperty(localName = "RegionOffsets")
+ private RegionList nodeList;
+
+ RegionPointSet() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RoadSignID.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RoadSignID.java
new file mode 100644
index 000000000..bf8582829
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/RoadSignID.java
@@ -0,0 +1,58 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.HeadingSlice;
+import us.dot.its.jpo.ode.plugin.j2735.common.Position3D;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class RoadSignID extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "position")
+ @JsonProperty("position")
+ private Position3D position;
+ @Asn1Property(tag = 1, name = "viewAngle")
+ @JsonProperty("viewAngle")
+ private HeadingSlice viewAngle;
+ @Asn1Property(tag = 2, name = "mutcdCode", optional = true)
+ @JsonProperty("mutcdCode")
+ private MUTCDCode mutcdCode;
+ @Asn1Property(tag = 3, name = "crc", optional = true)
+ @JsonProperty("crc")
+ private MsgCRC crc;
+
+ RoadSignID() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLL.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLL.java
new file mode 100644
index 000000000..cd1cb6fbd
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLL.java
@@ -0,0 +1,103 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = SegmentAttributeLLSerializer.class)
+@JsonDeserialize(using = SegmentAttributeLLDeserializer.class)
+public enum SegmentAttributeLL implements Asn1Enumerated {
+ RESERVED(0, "reserved"), DONOTBLOCK(1, "doNotBlock"), WHITELINE(2, "whiteLine"), MERGINGLANELEFT(3,
+ "mergingLaneLeft"), MERGINGLANERIGHT(4, "mergingLaneRight"), CURBONLEFT(5, "curbOnLeft"), CURBONRIGHT(6,
+ "curbOnRight"), LOADINGZONEONLEFT(7, "loadingzoneOnLeft"), LOADINGZONEONRIGHT(8,
+ "loadingzoneOnRight"), TURNOUTPOINTONLEFT(9, "turnOutPointOnLeft"), TURNOUTPOINTONRIGHT(10,
+ "turnOutPointOnRight"), ADJACENTPARKINGONLEFT(11,
+ "adjacentParkingOnLeft"), ADJACENTPARKINGONRIGHT(12,
+ "adjacentParkingOnRight"), ADJACENTBIKELANEONLEFT(13,
+ "adjacentBikeLaneOnLeft"), ADJACENTBIKELANEONRIGHT(14,
+ "adjacentBikeLaneOnRight"), SHAREDBIKELANE(15,
+ "sharedBikeLane"), BIKEBOXINFRONT(16,
+ "bikeBoxInFront"), TRANSITSTOPONLEFT(
+ 17,
+ "transitStopOnLeft"), TRANSITSTOPONRIGHT(
+ 18,
+ "transitStopOnRight"), TRANSITSTOPINLANE(
+ 19,
+ "transitStopInLane"), SHAREDWITHTRACKEDVEHICLE(
+ 20,
+ "sharedWithTrackedVehicle"), SAFEISLAND(
+ 21,
+ "safeIsland"), LOWCURBSPRESENT(
+ 22,
+ "lowCurbsPresent"), RUMBLESTRIPPRESENT(
+ 23,
+ "rumbleStripPresent"), AUDIBLESIGNALINGPRESENT(
+ 24,
+ "audibleSignalingPresent"), ADAPTIVETIMINGPRESENT(
+ 25,
+ "adaptiveTimingPresent"), RFSIGNALREQUESTPRESENT(
+ 26,
+ "rfSignalRequestPresent"), PARTIALCURBINTRUSION(
+ 27,
+ "partialCurbIntrusion"), TAPERTOLEFT(
+ 28,
+ "taperToLeft"), TAPERTORIGHT(
+ 29,
+ "taperToRight"), TAPERTOCENTERLINE(
+ 30,
+ "taperToCenterLine"), PARALLELPARKING(
+ 31,
+ "parallelParking"), HEADINPARKING(
+ 32,
+ "headInParking"), FREEPARKING(
+ 33,
+ "freeParking"), TIMERESTRICTIONSONPARKING(
+ 34,
+ "timeRestrictionsOnParking"), COSTTOPARK(
+ 35,
+ "costToPark"), MIDBLOCKCURBPRESENT(
+ 36,
+ "midBlockCurbPresent"), UNEVENPAVEMENTPRESENT(
+ 37,
+ "unEvenPavementPresent");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private SegmentAttributeLL(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 37;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLDeserializer.java
new file mode 100644
index 000000000..e301cda4a
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class SegmentAttributeLLDeserializer extends EnumeratedDeserializer {
+
+ SegmentAttributeLLDeserializer() {
+ super(SegmentAttributeLL.class);
+ }
+
+ @Override
+ protected SegmentAttributeLL[] listEnumValues() {
+ return SegmentAttributeLL.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLList.java
new file mode 100644
index 000000000..9736b4f0d
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLList.java
@@ -0,0 +1,54 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.serialization.SequenceOfEnumeratedDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class SegmentAttributeLLList extends Asn1SequenceOf {
+
+ SegmentAttributeLLList() {
+ super(SegmentAttributeLL.class, 1L, 8L);
+ }
+
+ public static class SegmentAttributeLLListDeserializer
+ extends
+ SequenceOfEnumeratedDeserializer {
+ public SegmentAttributeLLListDeserializer() {
+ super(SegmentAttributeLLList.class, SegmentAttributeLL.class);
+ }
+
+ @Override
+ protected SegmentAttributeLL[] listEnumValues() {
+ return SegmentAttributeLL.values();
+ }
+
+ @Override
+ protected SegmentAttributeLLList construct() {
+ return new SegmentAttributeLLList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLSerializer.java
new file mode 100644
index 000000000..8c933cc0c
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SegmentAttributeLLSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class SegmentAttributeLLSerializer extends EnumeratedSerializer {
+
+ SegmentAttributeLLSerializer() {
+ super(SegmentAttributeLL.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ShapePointSet.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ShapePointSet.java
new file mode 100644
index 000000000..f0852af82
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ShapePointSet.java
@@ -0,0 +1,59 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.LaneWidth;
+import us.dot.its.jpo.ode.plugin.j2735.common.NodeListXY;
+import us.dot.its.jpo.ode.plugin.j2735.common.Position3D;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class ShapePointSet extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "anchor", optional = true)
+ @JsonProperty("anchor")
+ private Position3D anchor;
+ @Asn1Property(tag = 1, name = "laneWidth", optional = true)
+ @JsonProperty("laneWidth")
+ private LaneWidth laneWidth;
+ @Asn1Property(tag = 2, name = "directionality", optional = true)
+ @JsonProperty("directionality")
+ private DirectionOfUse directionality;
+ @Asn1Property(tag = 3, name = "nodeList")
+ @JsonProperty("nodeList")
+ private NodeListXY nodeList;
+
+ ShapePointSet() {
+ super(true);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SignPrority.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SignPrority.java
new file mode 100644
index 000000000..69fdf27c8
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SignPrority.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = SignPrority.SignProrityDeserializer.class)
+public class SignPrority extends Asn1Integer {
+
+ public SignPrority() {
+ super(0L, 7L);
+ }
+
+ @JsonCreator
+ public SignPrority(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class SignProrityDeserializer extends IntegerDeserializer {
+ public SignProrityDeserializer() {
+ super(SignPrority.class);
+ }
+
+ @Override
+ protected SignPrority construct() {
+ return new SignPrority();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SpeedLimit.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SpeedLimit.java
new file mode 100644
index 000000000..b7d83248c
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SpeedLimit.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class SpeedLimit extends Asn1SequenceOf {
+
+ SpeedLimit() {
+ super(SpeedLimitSequence.class, 1L, 16L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SpeedLimitSequence.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SpeedLimitSequence.java
new file mode 100644
index 000000000..427028322
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/SpeedLimitSequence.java
@@ -0,0 +1,65 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.itis.ITIScodes;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class SpeedLimitSequence extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "item")
+ @JsonProperty("item")
+ private ItemChoice item;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class ItemChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "itis")
+ @JsonProperty("itis")
+ private ITIScodes itis;
+ @Asn1Property(tag = 1, name = "text")
+ @JsonProperty("text")
+ private ITIStextPhrase text;
+
+ ItemChoice() {
+ super(false);
+ }
+ }
+
+ SpeedLimitSequence() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrame.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrame.java
new file mode 100644
index 000000000..442e9a683
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrame.java
@@ -0,0 +1,216 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.DYear;
+import us.dot.its.jpo.ode.plugin.j2735.common.FurtherInfoID;
+import us.dot.its.jpo.ode.plugin.j2735.common.MinuteOfTheYear;
+import us.dot.its.jpo.ode.plugin.j2735.common.SSPindex;
+import us.dot.its.jpo.ode.plugin.j2735.itis.ITIScodesAndText;
+import us.dot.its.jpo.ode.plugin.serialization.NestedSequenceOfDeserializer;
+import us.dot.its.jpo.ode.plugin.serialization.NestedSequenceOfSerializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+/*
+ * EDITED -> notUsed, notUsed1, notUsed2, notUsed3, durationTime fields.
+ */
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class TravelerDataFrame extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "notUsed")
+ @JsonProperty("notUsed")
+ private SSPindex notUsed;
+ @Asn1Property(tag = 1, name = "frameType")
+ @JsonProperty("frameType")
+ private TravelerInfoType frameType;
+ @Asn1Property(tag = 2, name = "msgId")
+ @JsonProperty("msgId")
+ private MsgIdChoice msgId;
+ @Asn1Property(tag = 3, name = "startYear", optional = true)
+ @JsonProperty("startYear")
+ private DYear startYear;
+ @Asn1Property(tag = 4, name = "startTime")
+ @JsonProperty("startTime")
+ private MinuteOfTheYear startTime;
+ @Asn1Property(tag = 5, name = "durationTime")
+ @JsonProperty("durationTime")
+ private MinutesDuration durationTime;
+ @Asn1Property(tag = 6, name = "priority")
+ @JsonProperty("priority")
+ private SignPrority priority;
+ @Asn1Property(tag = 7, name = "notUsed1")
+ @JsonProperty("notUsed1")
+ private SSPindex notUsed1;
+ @Asn1Property(tag = 8, name = "regions")
+ @JsonProperty("regions")
+ private SequenceOfRegions regions;
+ @Asn1Property(tag = 9, name = "notUsed2")
+ @JsonProperty("notUsed2")
+ private SSPindex notUsed2;
+ @Asn1Property(tag = 10, name = "notUsed3")
+ @JsonProperty("notUsed3")
+ private SSPindex notUsed3;
+ @Asn1Property(tag = 11, name = "content")
+ @JsonProperty("content")
+ private ContentChoice content;
+ @Asn1Property(tag = 12, name = "url", optional = true)
+ @JsonProperty("url")
+ private URL_Short url;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class MsgIdChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "furtherInfoID")
+ @JsonProperty("furtherInfoID")
+ private FurtherInfoID furtherInfoID;
+ @Asn1Property(tag = 1, name = "roadSignID")
+ @JsonProperty("roadSignID")
+ private RoadSignID roadSignID;
+
+ MsgIdChoice() {
+ super(false);
+ }
+ }
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegions extends Asn1SequenceOf {
+ SequenceOfRegions() {
+ super(GeographicalPath.class, 1L, 16L);
+ }
+ }
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class ContentChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "advisory")
+ @JsonProperty("advisory")
+ @JsonDeserialize(using = AdvisoryDeserializer.class)
+ @JsonSerialize(using = AdvisorySerializer.class)
+ private ITIScodesAndText advisory;
+ @Asn1Property(tag = 1, name = "workZone")
+ @JsonProperty("workZone")
+ @JsonDeserialize(using = WorkZoneDeserializer.class)
+ @JsonSerialize(using = WorkZoneSerializer.class)
+ private WorkZone workZone;
+ @Asn1Property(tag = 2, name = "genericSign")
+ @JsonProperty("genericSign")
+ @JsonDeserialize(using = GenericSignDeserializer.class)
+ @JsonSerialize(using = GenericSignSerializer.class)
+ private GenericSignage genericSign;
+ @Asn1Property(tag = 3, name = "speedLimit")
+ @JsonProperty("speedLimit")
+ @JsonDeserialize(using = SpeedLimitDeserializer.class)
+ @JsonSerialize(using = SpeedLimitSerializer.class)
+ private SpeedLimit speedLimit;
+ @Asn1Property(tag = 4, name = "exitService")
+ @JsonProperty("exitService")
+ @JsonDeserialize(using = ExitServiceDeserializer.class)
+ @JsonSerialize(using = ExitServiceSerializer.class)
+ private ExitService exitService;
+
+ ContentChoice() {
+ super(false);
+ }
+ }
+
+ TravelerDataFrame() {
+ super(true);
+ }
+
+ public static class AdvisoryDeserializer extends NestedSequenceOfDeserializer {
+ public AdvisoryDeserializer() {
+ super(ITIScodesAndText.class, "SEQUENCE");
+ }
+ }
+
+ public static class AdvisorySerializer extends NestedSequenceOfSerializer {
+ public AdvisorySerializer() {
+ super(ITIScodesAndText.class, "SEQUENCE");
+ }
+ }
+
+ public static class WorkZoneDeserializer extends NestedSequenceOfDeserializer {
+ public WorkZoneDeserializer() {
+ super(WorkZone.class, "SEQUENCE");
+ }
+ }
+
+ public static class WorkZoneSerializer extends NestedSequenceOfSerializer {
+ public WorkZoneSerializer() {
+ super(WorkZone.class, "SEQUENCE");
+ }
+ }
+
+ public static class GenericSignDeserializer extends NestedSequenceOfDeserializer {
+ public GenericSignDeserializer() {
+ super(GenericSignage.class, "SEQUENCE");
+ }
+ }
+
+ public static class GenericSignSerializer extends NestedSequenceOfSerializer {
+ public GenericSignSerializer() {
+ super(GenericSignage.class, "SEQUENCE");
+ }
+ }
+
+ public static class SpeedLimitDeserializer extends NestedSequenceOfDeserializer {
+ public SpeedLimitDeserializer() {
+ super(SpeedLimit.class, "SEQUENCE");
+ }
+ }
+
+ public static class SpeedLimitSerializer extends NestedSequenceOfSerializer {
+ public SpeedLimitSerializer() {
+ super(SpeedLimit.class, "SEQUENCE");
+ }
+ }
+
+ public static class ExitServiceDeserializer extends NestedSequenceOfDeserializer {
+ public ExitServiceDeserializer() {
+ super(ExitService.class, "SEQUENCE");
+ }
+ }
+
+ public static class ExitServiceSerializer extends NestedSequenceOfSerializer {
+ public ExitServiceSerializer() {
+ super(ExitService.class, "SEQUENCE");
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrame.java.bak b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrame.java.bak
new file mode 100644
index 000000000..b109ee671
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrame.java.bak
@@ -0,0 +1,218 @@
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.j2735.common.DYear;
+import us.dot.its.jpo.ode.plugin.j2735.common.FurtherInfoID;
+import us.dot.its.jpo.ode.plugin.j2735.common.MinuteOfTheYear;
+import us.dot.its.jpo.ode.plugin.j2735.common.SSPindex;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import java.util.List;
+import java.util.Optional;
+import us.dot.its.jpo.ode.plugin.types.Asn1Type;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+import us.dot.its.jpo.ode.plugin.j2735.itis.ITIScodesAndText;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.NestedSequenceOfDeserializer;
+import us.dot.its.jpo.ode.plugin.serialization.NestedSequenceOfSerializer;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/*
+ * EDITED -> notUsed, notUsed1, notUsed2, notUsed3, durationTime fields.
+ */
+
+/**
+ *
+ *******************************************************************************
+ *
+ * This source file was generated by a tool. Beware manual edits might be
+ * overwritten in future releases. asn1jvm v1.0-SNAPSHOT
+ *
+ *******************************************************************************
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ ******************************************************************************
+ *
+ */
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class TravelerDataFrame extends Asn1Sequence {
+
+ @Asn1Property(tag = 0)
+ @JsonDeserialize(using = SSPindex.SSPindexDeserializer.class)
+ private SSPindex notUsed;
+ @Asn1Property(tag = 1)
+ private TravelerInfoType frameType;
+ @Asn1Property(tag = 2)
+ private MsgIdChoice msgId;
+ @Asn1Property(tag = 3, optional = true)
+ @JsonDeserialize(using = DYear.DYearDeserializer.class)
+ private DYear startYear;
+ @Asn1Property(tag = 4)
+ @JsonDeserialize(using = MinuteOfTheYear.MinuteOfTheYearDeserializer.class)
+ private MinuteOfTheYear startTime;
+ @Asn1Property(tag = 5)
+ @JsonDeserialize(using = MinutesDuration.MinutesDurationDeserializer.class)
+ private MinutesDuration durationTime;
+ @Asn1Property(tag = 6)
+ @JsonDeserialize(using = SignPrority.SignProrityDeserializer.class)
+ private SignPrority priority;
+ @Asn1Property(tag = 7)
+ @JsonDeserialize(using = SSPindex.SSPindexDeserializer.class)
+ private SSPindex notUsed1;
+ @Asn1Property(tag = 8)
+ private SequenceOfRegions regions;
+ @Asn1Property(tag = 9)
+ @JsonDeserialize(using = SSPindex.SSPindexDeserializer.class)
+ private SSPindex notUsed2;
+ @Asn1Property(tag = 10)
+ @JsonDeserialize(using = SSPindex.SSPindexDeserializer.class)
+ private SSPindex notUsed3;
+ @Asn1Property(tag = 11)
+ private ContentChoice content;
+ @Asn1Property(tag = 12, optional = true)
+ private URL_Short url;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class MsgIdChoice extends Asn1Choice {
+ @Asn1Property(tag = 0)
+ private FurtherInfoID furtherInfoID;
+ @Asn1Property(tag = 1)
+ private RoadSignID roadSignID;
+
+ MsgIdChoice() {
+ super(false);
+ }
+
+ @Override
+ protected List> listTypes() {
+ return null;
+ }
+ }
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegions extends Asn1SequenceOf {
+ SequenceOfRegions() {
+ super(GeographicalPath.class, 1L, 16L);
+ }
+ }
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class ContentChoice extends Asn1Choice {
+ @Asn1Property(tag = 0)
+ @JsonDeserialize(using = AdvisoryDeserializer.class)
+ @JsonSerialize(using = AdvisorySerializer.class)
+ private ITIScodesAndText advisory;
+ @Asn1Property(tag = 1)
+ @JsonDeserialize(using = WorkZoneDeserializer.class)
+ @JsonSerialize(using = WorkZoneSerializer.class)
+ private WorkZone workZone;
+ @Asn1Property(tag = 2)
+ @JsonDeserialize(using = GenericSignDeserializer.class)
+ @JsonSerialize(using = GenericSignSerializer.class)
+ private GenericSignage genericSign;
+ @Asn1Property(tag = 3)
+ @JsonDeserialize(using = SpeedLimitDeserializer.class)
+ @JsonSerialize(using = SpeedLimitSerializer.class)
+ private SpeedLimit speedLimit;
+ @Asn1Property(tag = 4)
+ @JsonDeserialize(using = ExitServiceDeserializer.class)
+ @JsonSerialize(using = ExitServiceSerializer.class)
+ private ExitService exitService;
+
+ ContentChoice() {
+ super(false);
+ }
+
+ @Override
+ protected List> listTypes() {
+ return null;
+ }
+ }
+
+ TravelerDataFrame() {
+ super(true);
+ }
+
+ public static class AdvisoryDeserializer extends NestedSequenceOfDeserializer {
+ public AdvisoryDeserializer() {
+ super(ITIScodesAndText.class, "SEQUENCE");
+ }
+ }
+
+ public static class AdvisorySerializer extends NestedSequenceOfSerializer {
+ public AdvisorySerializer() {
+ super(ITIScodesAndText.class, "SEQUENCE");
+ }
+ }
+
+ public static class WorkZoneDeserializer extends NestedSequenceOfDeserializer {
+ public WorkZoneDeserializer() {
+ super(WorkZone.class, "SEQUENCE");
+ }
+ }
+
+ public static class WorkZoneSerializer extends NestedSequenceOfSerializer {
+ public WorkZoneSerializer() {
+ super(WorkZone.class, "SEQUENCE");
+ }
+ }
+
+ public static class GenericSignDeserializer extends NestedSequenceOfDeserializer {
+ public GenericSignDeserializer() {
+ super(GenericSignage.class, "SEQUENCE");
+ }
+ }
+
+ public static class GenericSignSerializer extends NestedSequenceOfSerializer {
+ public GenericSignSerializer() {
+ super(GenericSignage.class, "SEQUENCE");
+ }
+ }
+
+ public static class SpeedLimitDeserializer extends NestedSequenceOfDeserializer {
+ public SpeedLimitDeserializer() {
+ super(SpeedLimit.class, "SEQUENCE");
+ }
+ }
+
+ public static class SpeedLimitSerializer extends NestedSequenceOfSerializer {
+ public SpeedLimitSerializer() {
+ super(SpeedLimit.class, "SEQUENCE");
+ }
+ }
+
+ public static class ExitServiceDeserializer extends NestedSequenceOfDeserializer {
+ public ExitServiceDeserializer() {
+ super(ExitService.class, "SEQUENCE");
+ }
+ }
+
+ public static class ExitServiceSerializer extends NestedSequenceOfSerializer {
+ public ExitServiceSerializer() {
+ super(ExitService.class, "SEQUENCE");
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrameList.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrameList.java
new file mode 100644
index 000000000..c2e61d33e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerDataFrameList.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class TravelerDataFrameList extends Asn1SequenceOf {
+
+ TravelerDataFrameList() {
+ super(TravelerDataFrame.class, 1L, 8L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoType.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoType.java
new file mode 100644
index 000000000..98b67f24e
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoType.java
@@ -0,0 +1,52 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Getter;
+import us.dot.its.jpo.ode.plugin.types.Asn1Enumerated;
+
+@Getter
+@JsonSerialize(using = TravelerInfoTypeSerializer.class)
+@JsonDeserialize(using = TravelerInfoTypeDeserializer.class)
+public enum TravelerInfoType implements Asn1Enumerated {
+ UNKNOWN(0, "unknown"), ADVISORY(1, "advisory"), ROADSIGNAGE(2, "roadSignage"), COMMERCIALSIGNAGE(3,
+ "commercialSignage");
+
+ private final int index;
+ private final String name;
+
+ public boolean hasExtensionMarker() {
+ return false;
+ }
+
+ private TravelerInfoType(int index, String name) {
+ this.index = index;
+ this.name = name;
+ }
+
+ public int maxIndex() {
+ return 3;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoTypeDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoTypeDeserializer.java
new file mode 100644
index 000000000..a3ee44c96
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoTypeDeserializer.java
@@ -0,0 +1,37 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedDeserializer;
+
+public class TravelerInfoTypeDeserializer extends EnumeratedDeserializer {
+
+ TravelerInfoTypeDeserializer() {
+ super(TravelerInfoType.class);
+ }
+
+ @Override
+ protected TravelerInfoType[] listEnumValues() {
+ return TravelerInfoType.values();
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoTypeSerializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoTypeSerializer.java
new file mode 100644
index 000000000..f12fca3eb
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInfoTypeSerializer.java
@@ -0,0 +1,32 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.serialization.EnumeratedSerializer;
+
+public class TravelerInfoTypeSerializer extends EnumeratedSerializer {
+
+ TravelerInfoTypeSerializer() {
+ super(TravelerInfoType.class);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInformation.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInformation.java
new file mode 100644
index 000000000..3c87e3e17
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInformation.java
@@ -0,0 +1,79 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
+import us.dot.its.jpo.ode.plugin.j2735.common.MinuteOfTheYear;
+import us.dot.its.jpo.ode.plugin.j2735.common.MsgCount;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_TravelerInformation;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+/*
+ * EDITED - Changed base class to Asn1Object, removed call to super constructor.
+ */
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class TravelerInformation extends Asn1Object {
+
+ @Asn1Property(tag = 0, name = "msgCnt")
+ @JsonProperty("msgCnt")
+ private MsgCount msgCnt;
+ @Asn1Property(tag = 1, name = "timeStamp", optional = true)
+ @JsonProperty("timeStamp")
+ private MinuteOfTheYear timeStamp;
+ @Asn1Property(tag = 2, name = "packetID", optional = true)
+ @JsonProperty("packetID")
+ private UniqueMSGID packetID;
+ @Asn1Property(tag = 3, name = "urlB", optional = true)
+ @JsonProperty("urlB")
+ private URL_Base urlB;
+ @Asn1Property(tag = 4, name = "dataFrames")
+ @JsonProperty("dataFrames")
+ @JacksonXmlElementWrapper(localName = "dataFrames")
+ @JacksonXmlProperty(localName = "TravelerDataFrame")
+ private TravelerDataFrameList dataFrames;
+ @Asn1Property(tag = 5, name = "regional", optional = true)
+ @JsonProperty("regional")
+ private SequenceOfRegional regional;
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_TravelerInformation.class, 1L, 4L);
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInformation.java.bak b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInformation.java.bak
new file mode 100644
index 000000000..acc409ab7
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/TravelerInformation.java.bak
@@ -0,0 +1,79 @@
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import us.dot.its.jpo.ode.plugin.asn1.Asn1Object;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.region.Reg_TravelerInformation;
+import us.dot.its.jpo.ode.plugin.j2735.common.MinuteOfTheYear;
+import us.dot.its.jpo.ode.plugin.j2735.common.MsgCount;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+
+/*
+ * EDITED - Changed base class to Asn1Object
+ */
+
+/**
+ * EDITED - Change base class to Asn1Object
+ *******************************************************************************
+ *
+ * This source file was generated by a tool. Beware manual edits might be
+ * overwritten in future releases. asn1jvm v1.0-SNAPSHOT
+ *
+ *******************************************************************************
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ ******************************************************************************
+ *
+ */
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class TravelerInformation extends Asn1Object {
+
+ @Asn1Property(tag = 0)
+ @JsonDeserialize(using = MsgCount.MsgCountDeserializer.class)
+ private MsgCount msgCnt;
+ @Asn1Property(tag = 1, optional = true)
+ @JsonDeserialize(using = MinuteOfTheYear.MinuteOfTheYearDeserializer.class)
+ private MinuteOfTheYear timeStamp;
+ @Asn1Property(tag = 2, optional = true)
+ private UniqueMSGID packetID;
+ @Asn1Property(tag = 3, optional = true)
+ private URL_Base urlB;
+ @Asn1Property(tag = 4)
+ @JacksonXmlElementWrapper(localName = "dataFrames")
+ @JacksonXmlProperty(localName = "TravelerDataFrame")
+ private TravelerDataFrameList dataFrames;
+ @Asn1Property(tag = 5, optional = true)
+ private SequenceOfRegional regional;
+
+ @JsonInclude(Include.NON_NULL)
+ public static class SequenceOfRegional extends Asn1SequenceOf {
+ SequenceOfRegional() {
+ super(Reg_TravelerInformation.class, 1L, 4L);
+ }
+ }
+
+// TravelerInformation() {
+// super(true);
+// }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/URL_Base.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/URL_Base.java
new file mode 100644
index 000000000..f04bade78
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/URL_Base.java
@@ -0,0 +1,39 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import us.dot.its.jpo.ode.plugin.types.IA5String;
+
+public class URL_Base extends IA5String {
+
+ public URL_Base() {
+ super(1, 45);
+ }
+
+ @JsonCreator
+ public URL_Base(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/URL_Short.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/URL_Short.java
new file mode 100644
index 000000000..05c0d6ce3
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/URL_Short.java
@@ -0,0 +1,39 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import us.dot.its.jpo.ode.plugin.types.IA5String;
+
+public class URL_Short extends IA5String {
+
+ public URL_Short() {
+ super(1, 15);
+ }
+
+ @JsonCreator
+ public URL_Short(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/UniqueMSGID.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/UniqueMSGID.java
new file mode 100644
index 000000000..c894f2f21
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/UniqueMSGID.java
@@ -0,0 +1,50 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import us.dot.its.jpo.ode.plugin.types.Asn1OctetString;
+
+public class UniqueMSGID extends Asn1OctetString {
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+ public UniqueMSGID() {
+ super(9, 9);
+ }
+
+ @JsonCreator
+ public UniqueMSGID(String value) {
+ this();
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ValidRegion.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ValidRegion.java
new file mode 100644
index 000000000..477b4c4c0
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/ValidRegion.java
@@ -0,0 +1,75 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.common.Extent;
+import us.dot.its.jpo.ode.plugin.j2735.common.HeadingSlice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class ValidRegion extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "direction")
+ @JsonProperty("direction")
+ private HeadingSlice direction;
+ @Asn1Property(tag = 1, name = "extent", optional = true)
+ @JsonProperty("extent")
+ private Extent extent;
+ @Asn1Property(tag = 2, name = "area")
+ @JsonProperty("area")
+ private AreaChoice area;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class AreaChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "shapePointSet")
+ @JsonProperty("shapePointSet")
+ private ShapePointSet shapePointSet;
+ @Asn1Property(tag = 1, name = "circle")
+ @JsonProperty("circle")
+ private Circle circle;
+ @Asn1Property(tag = 2, name = "regionPointSet")
+ @JsonProperty("regionPointSet")
+ private RegionPointSet regionPointSet;
+
+ AreaChoice() {
+ super(false);
+ }
+ }
+
+ ValidRegion() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/WorkZone.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/WorkZone.java
new file mode 100644
index 000000000..8feaeda66
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/WorkZone.java
@@ -0,0 +1,35 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import us.dot.its.jpo.ode.plugin.types.Asn1SequenceOf;
+
+@JsonInclude(Include.NON_NULL)
+public class WorkZone extends Asn1SequenceOf {
+
+ WorkZone() {
+ super(WorkZoneSequence.class, 1L, 16L);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/WorkZoneSequence.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/WorkZoneSequence.java
new file mode 100644
index 000000000..9bbf80a9b
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/WorkZoneSequence.java
@@ -0,0 +1,65 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import us.dot.its.jpo.ode.plugin.annotations.Asn1Property;
+import us.dot.its.jpo.ode.plugin.j2735.itis.ITIScodes;
+import us.dot.its.jpo.ode.plugin.types.Asn1Choice;
+import us.dot.its.jpo.ode.plugin.types.Asn1Sequence;
+
+@JsonInclude(Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@Getter
+@Setter
+public class WorkZoneSequence extends Asn1Sequence {
+
+ @Asn1Property(tag = 0, name = "item")
+ @JsonProperty("item")
+ private ItemChoice item;
+
+ @Getter
+ @Setter
+ @JsonInclude(Include.NON_NULL)
+ public static class ItemChoice extends Asn1Choice {
+ @Asn1Property(tag = 0, name = "itis")
+ @JsonProperty("itis")
+ private ITIScodes itis;
+ @Asn1Property(tag = 1, name = "text")
+ @JsonProperty("text")
+ private ITIStextPhrase text;
+
+ ItemChoice() {
+ super(false);
+ }
+ }
+
+ WorkZoneSequence() {
+ super(false);
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Zoom.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Zoom.java
new file mode 100644
index 000000000..60c53f968
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/j2735/travelerinformation/Zoom.java
@@ -0,0 +1,53 @@
+/*==============================================================================
+ *
+ * This source file was generated by a tool.
+ * Beware manual edits might be overwritten in future releases.
+ * asn1jvm v1.0-SNAPSHOT
+ *
+ *------------------------------------------------------------------------------
+ * Copyright 2024 USDOT
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *============================================================================*/
+
+package us.dot.its.jpo.ode.plugin.j2735.travelerinformation;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import us.dot.its.jpo.ode.plugin.serialization.IntegerDeserializer;
+import us.dot.its.jpo.ode.plugin.types.Asn1Integer;
+
+@JsonDeserialize(using = Zoom.ZoomDeserializer.class)
+public class Zoom extends Asn1Integer {
+
+ public Zoom() {
+ super(0L, 15L);
+ }
+
+ @JsonCreator
+ public Zoom(long value) {
+ this();
+ this.value = value;
+ }
+
+ public static class ZoomDeserializer extends IntegerDeserializer {
+ public ZoomDeserializer() {
+ super(Zoom.class);
+ }
+
+ @Override
+ protected Zoom construct() {
+ return new Zoom();
+ }
+ }
+}
\ No newline at end of file
diff --git a/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/serialization/BitStringDeserializer.java b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/serialization/BitStringDeserializer.java
new file mode 100644
index 000000000..21b3a13ae
--- /dev/null
+++ b/jpo-ode-plugins/src/main/java/us/dot/its/jpo/ode/plugin/serialization/BitStringDeserializer.java
@@ -0,0 +1,49 @@
+package us.dot.its.jpo.ode.plugin.serialization;
+
+import com.fasterxml.jackson.core.JacksonException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import java.io.IOException;
+import java.util.Map;
+import us.dot.its.jpo.ode.plugin.types.Asn1Bitstring;
+
+/**
+ * Deserialize an ASN.1 Bitstring from XER or JER.
+ *
+ * Note that this deserializer expects ODE JSON, not standard JER.
+ *
+ * @param The bitstring type.
+ * @author Ivan Yourshaw
+ */
+public abstract class BitStringDeserializer extends StdDeserializer {
+
+ protected abstract T construct();
+
+ protected BitStringDeserializer(Class> valueClass) {
+ super(valueClass);
+ }
+
+ @Override
+ public T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
+ throws IOException, JacksonException {
+ T bitstring = construct();
+ if (jsonParser.getCodec() instanceof XmlMapper) {
+ // XML: binary
+ String str = jsonParser.getText();
+ bitstring.fromBinaryString(str);
+ } else {
+ // ODE JSON dialect: read verbose map
+ TypeReference