Add a field to CAN messages to explicitly set the frame format.
authorChristopher Peplin <chris.peplin@rhubarbtech.com>
Tue, 7 Oct 2014 01:30:28 +0000 (21:30 -0400)
committerChristopher Peplin <chris.peplin@rhubarbtech.com>
Tue, 7 Oct 2014 01:30:39 +0000 (21:30 -0400)
See openxc/vi-firmware:230.

JSON.mkd
gen/cpp/openxc.pb
gen/cpp/openxc.pb.c
gen/cpp/openxc.pb.h
gen/java/com/openxc/BinaryMessages.java
gen/python/openxc_pb2.py
openxc.proto

index 4704574..804efa4 100644 (file)
--- a/JSON.mkd
+++ b/JSON.mkd
@@ -53,6 +53,10 @@ The format for a raw CAN message:
   complete string must have an even number of characters. The `0x` prefix is
   optional.
 
+**format** - (optional) explicitly set the frame format for the CAN message, one
+  of `standard` or `extended`. If the `id` is greater than `0x7ff`, the extended
+  frame format will be selected automatically.
+
 ## Diagnostic Messages
 
 ### Requests
index eef93e6..66f214f 100644 (file)
@@ -1,5 +1,5 @@
 
\13
+\8e\14
 \fopenxc.proto\12\ 6openxc"\94\ 3
 \ eVehicleMessage\12)
 \ 4type\18\ 1 \ 1(\ e2\e.openxc.VehicleMessage.Type\12'
@@ -15,13 +15,17 @@ TRANSLATED\10\ 2\12\ e
 
 DIAGNOSTIC\10\ 3\12\13
 \ fCONTROL_COMMAND\10\ 4\12\14
-\10COMMAND_RESPONSE\10\ 5";
+\10COMMAND_RESPONSE\10\ 5"\96\ 1
 
 RawMessage\12\v
 \ 3bus\18\ 1 \ 1(\ 5\12\12
 
 message_id\18\ 2 \ 1(\r\12\f
-\ 4data\18\ 3 \ 1(\f\ 4
+\ 4data\18\ 3 \ 1(\f\12.
+\ 6format\18\ 4 \ 1(\ e2\1e.openxc.RawMessage.FrameFormat")
+\vFrameFormat\12\f
+\bSTANDARD\10\ 1\12\f
+\bEXTENDED\10\ 2\ 4
 \ eControlCommand\12)
 \ 4type\18\ 1 \ 1(\ e2\e.openxc.ControlCommand.Type\12<
 \12diagnostic_request\18\ 2 \ 1(\v2 .openxc.DiagnosticControlCommand\12G
index ac31b7e..3a5ca0f 100644 (file)
@@ -1,5 +1,5 @@
 /* Automatically generated nanopb constant definitions */
-/* Generated by nanopb-0.3.1 at Mon Sep 29 21:53:25 2014. */
+/* Generated by nanopb-0.3.1 at Mon Oct  6 21:30:25 2014. */
 
 #include "openxc.pb.h"
 
@@ -19,10 +19,11 @@ const pb_field_t openxc_VehicleMessage_fields[7] = {
     PB_LAST_FIELD
 };
 
-const pb_field_t openxc_RawMessage_fields[4] = {
+const pb_field_t openxc_RawMessage_fields[5] = {
     PB_FIELD(  1, INT32   , OPTIONAL, STATIC  , FIRST, openxc_RawMessage, bus, bus, 0),
     PB_FIELD(  2, UINT32  , OPTIONAL, STATIC  , OTHER, openxc_RawMessage, message_id, bus, 0),
     PB_FIELD(  3, BYTES   , OPTIONAL, STATIC  , OTHER, openxc_RawMessage, data, message_id, 0),
+    PB_FIELD(  4, ENUM    , OPTIONAL, STATIC  , OTHER, openxc_RawMessage, format, data, 0),
     PB_LAST_FIELD
 };
 
index 4af15de..5f11ec1 100644 (file)
@@ -1,5 +1,5 @@
 /* Automatically generated nanopb header */
-/* Generated by nanopb-0.3.1 at Mon Sep 29 21:53:25 2014. */
+/* Generated by nanopb-0.3.1 at Mon Oct  6 21:30:25 2014. */
 
 #ifndef PB_OPENXC_PB_H_INCLUDED
 #define PB_OPENXC_PB_H_INCLUDED
@@ -22,6 +22,11 @@ typedef enum _openxc_VehicleMessage_Type {
     openxc_VehicleMessage_Type_COMMAND_RESPONSE = 5
 } openxc_VehicleMessage_Type;
 
+typedef enum _openxc_RawMessage_FrameFormat {
+    openxc_RawMessage_FrameFormat_STANDARD = 1,
+    openxc_RawMessage_FrameFormat_EXTENDED = 2
+} openxc_RawMessage_FrameFormat;
+
 typedef enum _openxc_ControlCommand_Type {
     openxc_ControlCommand_Type_VERSION = 1,
     openxc_ControlCommand_Type_DEVICE_ID = 2,
@@ -160,6 +165,8 @@ typedef struct _openxc_RawMessage {
     uint32_t message_id;
     bool has_data;
     openxc_RawMessage_data_t data;
+    bool has_format;
+    openxc_RawMessage_FrameFormat format;
 } openxc_RawMessage;
 
 typedef struct _openxc_DiagnosticControlCommand {
@@ -214,7 +221,7 @@ typedef struct _openxc_VehicleMessage {
 
 /* Initializer values for message structs */
 #define openxc_VehicleMessage_init_default       {false, (openxc_VehicleMessage_Type)0, false, openxc_RawMessage_init_default, false, openxc_TranslatedMessage_init_default, false, openxc_DiagnosticResponse_init_default, false, openxc_ControlCommand_init_default, false, openxc_CommandResponse_init_default}
-#define openxc_RawMessage_init_default           {false, 0, false, 0, false, {0, {0}}}
+#define openxc_RawMessage_init_default           {false, 0, false, 0, false, {0, {0}}, false, (openxc_RawMessage_FrameFormat)0}
 #define openxc_ControlCommand_init_default       {false, (openxc_ControlCommand_Type)0, false, openxc_DiagnosticControlCommand_init_default, false, openxc_PassthroughModeControlCommand_init_default, false, openxc_AcceptanceFilterBypassCommand_init_default, false, openxc_PayloadFormatCommand_init_default, false, openxc_PredefinedObd2RequestsCommand_init_default}
 #define openxc_DiagnosticControlCommand_init_default {false, openxc_DiagnosticRequest_init_default, false, (openxc_DiagnosticControlCommand_Action)0}
 #define openxc_PassthroughModeControlCommand_init_default {false, 0, false, 0}
@@ -227,7 +234,7 @@ typedef struct _openxc_VehicleMessage {
 #define openxc_DynamicField_init_default         {false, (openxc_DynamicField_Type)0, false, "", false, 0, false, 0}
 #define openxc_TranslatedMessage_init_default    {false, (openxc_TranslatedMessage_Type)0, false, "", false, openxc_DynamicField_init_default, false, openxc_DynamicField_init_default}
 #define openxc_VehicleMessage_init_zero          {false, (openxc_VehicleMessage_Type)0, false, openxc_RawMessage_init_zero, false, openxc_TranslatedMessage_init_zero, false, openxc_DiagnosticResponse_init_zero, false, openxc_ControlCommand_init_zero, false, openxc_CommandResponse_init_zero}
-#define openxc_RawMessage_init_zero              {false, 0, false, 0, false, {0, {0}}}
+#define openxc_RawMessage_init_zero              {false, 0, false, 0, false, {0, {0}}, false, (openxc_RawMessage_FrameFormat)0}
 #define openxc_ControlCommand_init_zero          {false, (openxc_ControlCommand_Type)0, false, openxc_DiagnosticControlCommand_init_zero, false, openxc_PassthroughModeControlCommand_init_zero, false, openxc_AcceptanceFilterBypassCommand_init_zero, false, openxc_PayloadFormatCommand_init_zero, false, openxc_PredefinedObd2RequestsCommand_init_zero}
 #define openxc_DiagnosticControlCommand_init_zero {false, openxc_DiagnosticRequest_init_zero, false, (openxc_DiagnosticControlCommand_Action)0}
 #define openxc_PassthroughModeControlCommand_init_zero {false, 0, false, 0}
@@ -274,6 +281,7 @@ typedef struct _openxc_VehicleMessage {
 #define openxc_RawMessage_bus_tag                1
 #define openxc_RawMessage_message_id_tag         2
 #define openxc_RawMessage_data_tag               3
+#define openxc_RawMessage_format_tag             4
 #define openxc_DiagnosticControlCommand_request_tag 1
 #define openxc_DiagnosticControlCommand_action_tag 2
 #define openxc_TranslatedMessage_type_tag        1
@@ -295,7 +303,7 @@ typedef struct _openxc_VehicleMessage {
 
 /* Struct field encoding specification for nanopb */
 extern const pb_field_t openxc_VehicleMessage_fields[7];
-extern const pb_field_t openxc_RawMessage_fields[4];
+extern const pb_field_t openxc_RawMessage_fields[5];
 extern const pb_field_t openxc_ControlCommand_fields[7];
 extern const pb_field_t openxc_DiagnosticControlCommand_fields[3];
 extern const pb_field_t openxc_PassthroughModeControlCommand_fields[3];
@@ -309,8 +317,8 @@ extern const pb_field_t openxc_DynamicField_fields[5];
 extern const pb_field_t openxc_TranslatedMessage_fields[5];
 
 /* Maximum encoded size of messages (where known) */
-#define openxc_VehicleMessage_size               716
-#define openxc_RawMessage_size                   27
+#define openxc_VehicleMessage_size               722
+#define openxc_RawMessage_size                   33
 #define openxc_ControlCommand_size               126
 #define openxc_DiagnosticControlCommand_size     76
 #define openxc_PassthroughModeControlCommand_size 13
index b3d1be4..0937ef5 100644 (file)
@@ -1514,6 +1514,16 @@ public final class BinaryMessages {
      * <code>optional bytes data = 3;</code>
      */
     com.google.protobuf.ByteString getData();
+
+    // optional .openxc.RawMessage.FrameFormat format = 4;
+    /**
+     * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+     */
+    boolean hasFormat();
+    /**
+     * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+     */
+    com.openxc.BinaryMessages.RawMessage.FrameFormat getFormat();
   }
   /**
    * Protobuf type {@code openxc.RawMessage}
@@ -1581,6 +1591,17 @@ public final class BinaryMessages {
               data_ = input.readBytes();
               break;
             }
+            case 32: {
+              int rawValue = input.readEnum();
+              com.openxc.BinaryMessages.RawMessage.FrameFormat value = com.openxc.BinaryMessages.RawMessage.FrameFormat.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(4, rawValue);
+              } else {
+                bitField0_ |= 0x00000008;
+                format_ = value;
+              }
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -1620,6 +1641,88 @@ public final class BinaryMessages {
       return PARSER;
     }
 
+    /**
+     * Protobuf enum {@code openxc.RawMessage.FrameFormat}
+     */
+    public enum FrameFormat
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>STANDARD = 1;</code>
+       */
+      STANDARD(0, 1),
+      /**
+       * <code>EXTENDED = 2;</code>
+       */
+      EXTENDED(1, 2),
+      ;
+
+      /**
+       * <code>STANDARD = 1;</code>
+       */
+      public static final int STANDARD_VALUE = 1;
+      /**
+       * <code>EXTENDED = 2;</code>
+       */
+      public static final int EXTENDED_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static FrameFormat valueOf(int value) {
+        switch (value) {
+          case 1: return STANDARD;
+          case 2: return EXTENDED;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<FrameFormat>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<FrameFormat>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<FrameFormat>() {
+              public FrameFormat findValueByNumber(int number) {
+                return FrameFormat.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return com.openxc.BinaryMessages.RawMessage.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final FrameFormat[] VALUES = values();
+
+      public static FrameFormat valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private FrameFormat(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:openxc.RawMessage.FrameFormat)
+    }
+
     private int bitField0_;
     // optional int32 bus = 1;
     public static final int BUS_FIELD_NUMBER = 1;
@@ -1669,10 +1772,27 @@ public final class BinaryMessages {
       return data_;
     }
 
+    // optional .openxc.RawMessage.FrameFormat format = 4;
+    public static final int FORMAT_FIELD_NUMBER = 4;
+    private com.openxc.BinaryMessages.RawMessage.FrameFormat format_;
+    /**
+     * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+     */
+    public boolean hasFormat() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+     */
+    public com.openxc.BinaryMessages.RawMessage.FrameFormat getFormat() {
+      return format_;
+    }
+
     private void initFields() {
       bus_ = 0;
       messageId_ = 0;
       data_ = com.google.protobuf.ByteString.EMPTY;
+      format_ = com.openxc.BinaryMessages.RawMessage.FrameFormat.STANDARD;
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
@@ -1695,6 +1815,9 @@ public final class BinaryMessages {
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         output.writeBytes(3, data_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeEnum(4, format_.getNumber());
+      }
       getUnknownFields().writeTo(output);
     }
 
@@ -1716,6 +1839,10 @@ public final class BinaryMessages {
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(3, data_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(4, format_.getNumber());
+      }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
@@ -1838,6 +1965,8 @@ public final class BinaryMessages {
         bitField0_ = (bitField0_ & ~0x00000002);
         data_ = com.google.protobuf.ByteString.EMPTY;
         bitField0_ = (bitField0_ & ~0x00000004);
+        format_ = com.openxc.BinaryMessages.RawMessage.FrameFormat.STANDARD;
+        bitField0_ = (bitField0_ & ~0x00000008);
         return this;
       }
 
@@ -1878,6 +2007,10 @@ public final class BinaryMessages {
           to_bitField0_ |= 0x00000004;
         }
         result.data_ = data_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.format_ = format_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -1903,6 +2036,9 @@ public final class BinaryMessages {
         if (other.hasData()) {
           setData(other.getData());
         }
+        if (other.hasFormat()) {
+          setFormat(other.getFormat());
+        }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
@@ -2032,6 +2168,42 @@ public final class BinaryMessages {
         return this;
       }
 
+      // optional .openxc.RawMessage.FrameFormat format = 4;
+      private com.openxc.BinaryMessages.RawMessage.FrameFormat format_ = com.openxc.BinaryMessages.RawMessage.FrameFormat.STANDARD;
+      /**
+       * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+       */
+      public boolean hasFormat() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+       */
+      public com.openxc.BinaryMessages.RawMessage.FrameFormat getFormat() {
+        return format_;
+      }
+      /**
+       * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+       */
+      public Builder setFormat(com.openxc.BinaryMessages.RawMessage.FrameFormat value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000008;
+        format_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .openxc.RawMessage.FrameFormat format = 4;</code>
+       */
+      public Builder clearFormat() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        format_ = com.openxc.BinaryMessages.RawMessage.FrameFormat.STANDARD;
+        onChanged();
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:openxc.RawMessage)
     }
 
@@ -10913,59 +11085,61 @@ public final class BinaryMessages {
       "ommand\0221\n\020command_response\030\006 \001(\0132\027.openx" +
       "c.CommandResponse\"Z\n\004Type\022\007\n\003RAW\020\001\022\016\n\nTR" +
       "ANSLATED\020\002\022\016\n\nDIAGNOSTIC\020\003\022\023\n\017CONTROL_CO",
-      "MMAND\020\004\022\024\n\020COMMAND_RESPONSE\020\005\";\n\nRawMess" +
-      "age\022\013\n\003bus\030\001 \001(\005\022\022\n\nmessage_id\030\002 \001(\r\022\014\n\004" +
-      "data\030\003 \001(\014\"\270\004\n\016ControlCommand\022)\n\004type\030\001 " +
-      "\001(\0162\033.openxc.ControlCommand.Type\022<\n\022diag" +
-      "nostic_request\030\002 \001(\0132 .openxc.Diagnostic" +
-      "ControlCommand\022G\n\030passthrough_mode_reque" +
-      "st\030\003 \001(\0132%.openxc.PassthroughModeControl" +
-      "Command\022O\n acceptance_filter_bypass_comm" +
-      "and\030\004 \001(\0132%.openxc.AcceptanceFilterBypas" +
-      "sCommand\022<\n\026payload_format_command\030\005 \001(\013",
-      "2\034.openxc.PayloadFormatCommand\022O\n predef" +
-      "ined_obd2_requests_command\030\006 \001(\0132%.openx" +
-      "c.PredefinedObd2RequestsCommand\"\223\001\n\004Type" +
-      "\022\013\n\007VERSION\020\001\022\r\n\tDEVICE_ID\020\002\022\016\n\nDIAGNOST" +
-      "IC\020\003\022\017\n\013PASSTHROUGH\020\004\022\034\n\030ACCEPTANCE_FILT" +
-      "ER_BYPASS\020\005\022\022\n\016PAYLOAD_FORMAT\020\006\022\034\n\030PREDE" +
-      "FINED_OBD2_REQUESTS\020\007\"\236\001\n\030DiagnosticCont" +
-      "rolCommand\022*\n\007request\030\001 \001(\0132\031.openxc.Dia" +
-      "gnosticRequest\0227\n\006action\030\002 \001(\0162\'.openxc." +
-      "DiagnosticControlCommand.Action\"\035\n\006Actio",
-      "n\022\007\n\003ADD\020\001\022\n\n\006CANCEL\020\002\"=\n\035PassthroughMod" +
-      "eControlCommand\022\013\n\003bus\030\001 \001(\005\022\017\n\007enabled\030" +
-      "\002 \001(\010\"<\n\035AcceptanceFilterBypassCommand\022\013" +
-      "\n\003bus\030\001 \001(\005\022\016\n\006bypass\030\002 \001(\010\"{\n\024PayloadFo" +
-      "rmatCommand\022:\n\006format\030\001 \001(\0162*.openxc.Pay" +
-      "loadFormatCommand.PayloadFormat\"\'\n\rPaylo" +
-      "adFormat\022\010\n\004JSON\020\001\022\014\n\010PROTOBUF\020\002\"0\n\035Pred" +
-      "efinedObd2RequestsCommand\022\017\n\007enabled\030\001 \001" +
-      "(\010\"]\n\017CommandResponse\022)\n\004type\030\001 \001(\0162\033.op" +
-      "enxc.ControlCommand.Type\022\017\n\007message\030\002 \001(",
-      "\t\022\016\n\006status\030\003 \001(\010\"\375\001\n\021DiagnosticRequest\022" +
-      "\013\n\003bus\030\001 \001(\005\022\022\n\nmessage_id\030\002 \001(\r\022\014\n\004mode" +
-      "\030\003 \001(\r\022\013\n\003pid\030\004 \001(\r\022\017\n\007payload\030\005 \001(\014\022\032\n\022" +
-      "multiple_responses\030\006 \001(\010\022\021\n\tfrequency\030\007 " +
-      "\001(\001\022\014\n\004name\030\010 \001(\t\022;\n\014decoded_type\030\t \001(\0162" +
-      "%.openxc.DiagnosticRequest.DecodedType\"!" +
-      "\n\013DecodedType\022\010\n\004NONE\020\001\022\010\n\004OBD2\020\002\"\241\001\n\022Di" +
-      "agnosticResponse\022\013\n\003bus\030\001 \001(\005\022\022\n\nmessage" +
-      "_id\030\002 \001(\r\022\014\n\004mode\030\003 \001(\r\022\013\n\003pid\030\004 \001(\r\022\017\n\007" +
-      "success\030\005 \001(\010\022\036\n\026negative_response_code\030",
-      "\006 \001(\r\022\017\n\007payload\030\007 \001(\014\022\r\n\005value\030\010 \001(\001\"\242\001" +
-      "\n\014DynamicField\022\'\n\004type\030\001 \001(\0162\031.openxc.Dy" +
-      "namicField.Type\022\024\n\014string_value\030\002 \001(\t\022\025\n" +
-      "\rnumeric_value\030\003 \001(\001\022\025\n\rboolean_value\030\004 " +
-      "\001(\010\"%\n\004Type\022\n\n\006STRING\020\001\022\007\n\003NUM\020\002\022\010\n\004BOOL" +
-      "\020\003\"\367\001\n\021TranslatedMessage\022,\n\004type\030\001 \001(\0162\036" +
-      ".openxc.TranslatedMessage.Type\022\014\n\004name\030\002" +
-      " \001(\t\022#\n\005value\030\003 \001(\0132\024.openxc.DynamicFiel" +
-      "d\022#\n\005event\030\004 \001(\0132\024.openxc.DynamicField\"\\" +
-      "\n\004Type\022\n\n\006STRING\020\001\022\007\n\003NUM\020\002\022\010\n\004BOOL\020\003\022\022\n",
-      "\016EVENTED_STRING\020\004\022\017\n\013EVENTED_NUM\020\005\022\020\n\014EV" +
-      "ENTED_BOOL\020\006B\034\n\ncom.openxcB\016BinaryMessag" +
-      "es"
+      "MMAND\020\004\022\024\n\020COMMAND_RESPONSE\020\005\"\226\001\n\nRawMes" +
+      "sage\022\013\n\003bus\030\001 \001(\005\022\022\n\nmessage_id\030\002 \001(\r\022\014\n" +
+      "\004data\030\003 \001(\014\022.\n\006format\030\004 \001(\0162\036.openxc.Raw" +
+      "Message.FrameFormat\")\n\013FrameFormat\022\014\n\010ST" +
+      "ANDARD\020\001\022\014\n\010EXTENDED\020\002\"\270\004\n\016ControlComman" +
+      "d\022)\n\004type\030\001 \001(\0162\033.openxc.ControlCommand." +
+      "Type\022<\n\022diagnostic_request\030\002 \001(\0132 .openx" +
+      "c.DiagnosticControlCommand\022G\n\030passthroug" +
+      "h_mode_request\030\003 \001(\0132%.openxc.Passthroug" +
+      "hModeControlCommand\022O\n acceptance_filter",
+      "_bypass_command\030\004 \001(\0132%.openxc.Acceptanc" +
+      "eFilterBypassCommand\022<\n\026payload_format_c" +
+      "ommand\030\005 \001(\0132\034.openxc.PayloadFormatComma" +
+      "nd\022O\n predefined_obd2_requests_command\030\006" +
+      " \001(\0132%.openxc.PredefinedObd2RequestsComm" +
+      "and\"\223\001\n\004Type\022\013\n\007VERSION\020\001\022\r\n\tDEVICE_ID\020\002" +
+      "\022\016\n\nDIAGNOSTIC\020\003\022\017\n\013PASSTHROUGH\020\004\022\034\n\030ACC" +
+      "EPTANCE_FILTER_BYPASS\020\005\022\022\n\016PAYLOAD_FORMA" +
+      "T\020\006\022\034\n\030PREDEFINED_OBD2_REQUESTS\020\007\"\236\001\n\030Di" +
+      "agnosticControlCommand\022*\n\007request\030\001 \001(\0132",
+      "\031.openxc.DiagnosticRequest\0227\n\006action\030\002 \001" +
+      "(\0162\'.openxc.DiagnosticControlCommand.Act" +
+      "ion\"\035\n\006Action\022\007\n\003ADD\020\001\022\n\n\006CANCEL\020\002\"=\n\035Pa" +
+      "ssthroughModeControlCommand\022\013\n\003bus\030\001 \001(\005" +
+      "\022\017\n\007enabled\030\002 \001(\010\"<\n\035AcceptanceFilterByp" +
+      "assCommand\022\013\n\003bus\030\001 \001(\005\022\016\n\006bypass\030\002 \001(\010\"" +
+      "{\n\024PayloadFormatCommand\022:\n\006format\030\001 \001(\0162" +
+      "*.openxc.PayloadFormatCommand.PayloadFor" +
+      "mat\"\'\n\rPayloadFormat\022\010\n\004JSON\020\001\022\014\n\010PROTOB" +
+      "UF\020\002\"0\n\035PredefinedObd2RequestsCommand\022\017\n",
+      "\007enabled\030\001 \001(\010\"]\n\017CommandResponse\022)\n\004typ" +
+      "e\030\001 \001(\0162\033.openxc.ControlCommand.Type\022\017\n\007" +
+      "message\030\002 \001(\t\022\016\n\006status\030\003 \001(\010\"\375\001\n\021Diagno" +
+      "sticRequest\022\013\n\003bus\030\001 \001(\005\022\022\n\nmessage_id\030\002" +
+      " \001(\r\022\014\n\004mode\030\003 \001(\r\022\013\n\003pid\030\004 \001(\r\022\017\n\007paylo" +
+      "ad\030\005 \001(\014\022\032\n\022multiple_responses\030\006 \001(\010\022\021\n\t" +
+      "frequency\030\007 \001(\001\022\014\n\004name\030\010 \001(\t\022;\n\014decoded" +
+      "_type\030\t \001(\0162%.openxc.DiagnosticRequest.D" +
+      "ecodedType\"!\n\013DecodedType\022\010\n\004NONE\020\001\022\010\n\004O" +
+      "BD2\020\002\"\241\001\n\022DiagnosticResponse\022\013\n\003bus\030\001 \001(",
+      "\005\022\022\n\nmessage_id\030\002 \001(\r\022\014\n\004mode\030\003 \001(\r\022\013\n\003p" +
+      "id\030\004 \001(\r\022\017\n\007success\030\005 \001(\010\022\036\n\026negative_re" +
+      "sponse_code\030\006 \001(\r\022\017\n\007payload\030\007 \001(\014\022\r\n\005va" +
+      "lue\030\010 \001(\001\"\242\001\n\014DynamicField\022\'\n\004type\030\001 \001(\016" +
+      "2\031.openxc.DynamicField.Type\022\024\n\014string_va" +
+      "lue\030\002 \001(\t\022\025\n\rnumeric_value\030\003 \001(\001\022\025\n\rbool" +
+      "ean_value\030\004 \001(\010\"%\n\004Type\022\n\n\006STRING\020\001\022\007\n\003N" +
+      "UM\020\002\022\010\n\004BOOL\020\003\"\367\001\n\021TranslatedMessage\022,\n\004" +
+      "type\030\001 \001(\0162\036.openxc.TranslatedMessage.Ty" +
+      "pe\022\014\n\004name\030\002 \001(\t\022#\n\005value\030\003 \001(\0132\024.openxc",
+      ".DynamicField\022#\n\005event\030\004 \001(\0132\024.openxc.Dy" +
+      "namicField\"\\\n\004Type\022\n\n\006STRING\020\001\022\007\n\003NUM\020\002\022" +
+      "\010\n\004BOOL\020\003\022\022\n\016EVENTED_STRING\020\004\022\017\n\013EVENTED" +
+      "_NUM\020\005\022\020\n\014EVENTED_BOOL\020\006B\034\n\ncom.openxcB\016" +
+      "BinaryMessages"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -10983,7 +11157,7 @@ public final class BinaryMessages {
           internal_static_openxc_RawMessage_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_openxc_RawMessage_descriptor,
-              new java.lang.String[] { "Bus", "MessageId", "Data", });
+              new java.lang.String[] { "Bus", "MessageId", "Data", "Format", });
           internal_static_openxc_ControlCommand_descriptor =
             getDescriptor().getMessageTypes().get(2);
           internal_static_openxc_ControlCommand_fieldAccessorTable = new
index 140bc4b..b2721d3 100644 (file)
@@ -13,7 +13,7 @@ from google.protobuf import descriptor_pb2
 DESCRIPTOR = _descriptor.FileDescriptor(
   name='openxc.proto',
   package='openxc',
-  serialized_pb='\n\x0copenxc.proto\x12\x06openxc\"\x94\x03\n\x0eVehicleMessage\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openxc.VehicleMessage.Type\x12\'\n\x0braw_message\x18\x02 \x01(\x0b\x32\x12.openxc.RawMessage\x12\x35\n\x12translated_message\x18\x03 \x01(\x0b\x32\x19.openxc.TranslatedMessage\x12\x37\n\x13\x64iagnostic_response\x18\x04 \x01(\x0b\x32\x1a.openxc.DiagnosticResponse\x12/\n\x0f\x63ontrol_command\x18\x05 \x01(\x0b\x32\x16.openxc.ControlCommand\x12\x31\n\x10\x63ommand_response\x18\x06 \x01(\x0b\x32\x17.openxc.CommandResponse\"Z\n\x04Type\x12\x07\n\x03RAW\x10\x01\x12\x0e\n\nTRANSLATED\x10\x02\x12\x0e\n\nDIAGNOSTIC\x10\x03\x12\x13\n\x0f\x43ONTROL_COMMAND\x10\x04\x12\x14\n\x10\x43OMMAND_RESPONSE\x10\x05\";\n\nRawMessage\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x12\n\nmessage_id\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"\xb8\x04\n\x0e\x43ontrolCommand\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openxc.ControlCommand.Type\x12<\n\x12\x64iagnostic_request\x18\x02 \x01(\x0b\x32 .openxc.DiagnosticControlCommand\x12G\n\x18passthrough_mode_request\x18\x03 \x01(\x0b\x32%.openxc.PassthroughModeControlCommand\x12O\n acceptance_filter_bypass_command\x18\x04 \x01(\x0b\x32%.openxc.AcceptanceFilterBypassCommand\x12<\n\x16payload_format_command\x18\x05 \x01(\x0b\x32\x1c.openxc.PayloadFormatCommand\x12O\n predefined_obd2_requests_command\x18\x06 \x01(\x0b\x32%.openxc.PredefinedObd2RequestsCommand\"\x93\x01\n\x04Type\x12\x0b\n\x07VERSION\x10\x01\x12\r\n\tDEVICE_ID\x10\x02\x12\x0e\n\nDIAGNOSTIC\x10\x03\x12\x0f\n\x0bPASSTHROUGH\x10\x04\x12\x1c\n\x18\x41\x43\x43\x45PTANCE_FILTER_BYPASS\x10\x05\x12\x12\n\x0ePAYLOAD_FORMAT\x10\x06\x12\x1c\n\x18PREDEFINED_OBD2_REQUESTS\x10\x07\"\x9e\x01\n\x18\x44iagnosticControlCommand\x12*\n\x07request\x18\x01 \x01(\x0b\x32\x19.openxc.DiagnosticRequest\x12\x37\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\'.openxc.DiagnosticControlCommand.Action\"\x1d\n\x06\x41\x63tion\x12\x07\n\x03\x41\x44\x44\x10\x01\x12\n\n\x06\x43\x41NCEL\x10\x02\"=\n\x1dPassthroughModeControlCommand\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\"<\n\x1d\x41\x63\x63\x65ptanceFilterBypassCommand\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x0e\n\x06\x62ypass\x18\x02 \x01(\x08\"{\n\x14PayloadFormatCommand\x12:\n\x06\x66ormat\x18\x01 \x01(\x0e\x32*.openxc.PayloadFormatCommand.PayloadFormat\"\'\n\rPayloadFormat\x12\x08\n\x04JSON\x10\x01\x12\x0c\n\x08PROTOBUF\x10\x02\"0\n\x1dPredefinedObd2RequestsCommand\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"]\n\x0f\x43ommandResponse\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openxc.ControlCommand.Type\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\x08\"\xfd\x01\n\x11\x44iagnosticRequest\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x12\n\nmessage_id\x18\x02 \x01(\r\x12\x0c\n\x04mode\x18\x03 \x01(\r\x12\x0b\n\x03pid\x18\x04 \x01(\r\x12\x0f\n\x07payload\x18\x05 \x01(\x0c\x12\x1a\n\x12multiple_responses\x18\x06 \x01(\x08\x12\x11\n\tfrequency\x18\x07 \x01(\x01\x12\x0c\n\x04name\x18\x08 \x01(\t\x12;\n\x0c\x64\x65\x63oded_type\x18\t \x01(\x0e\x32%.openxc.DiagnosticRequest.DecodedType\"!\n\x0b\x44\x65\x63odedType\x12\x08\n\x04NONE\x10\x01\x12\x08\n\x04OBD2\x10\x02\"\xa1\x01\n\x12\x44iagnosticResponse\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x12\n\nmessage_id\x18\x02 \x01(\r\x12\x0c\n\x04mode\x18\x03 \x01(\r\x12\x0b\n\x03pid\x18\x04 \x01(\r\x12\x0f\n\x07success\x18\x05 \x01(\x08\x12\x1e\n\x16negative_response_code\x18\x06 \x01(\r\x12\x0f\n\x07payload\x18\x07 \x01(\x0c\x12\r\n\x05value\x18\x08 \x01(\x01\"\xa2\x01\n\x0c\x44ynamicField\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.openxc.DynamicField.Type\x12\x14\n\x0cstring_value\x18\x02 \x01(\t\x12\x15\n\rnumeric_value\x18\x03 \x01(\x01\x12\x15\n\rboolean_value\x18\x04 \x01(\x08\"%\n\x04Type\x12\n\n\x06STRING\x10\x01\x12\x07\n\x03NUM\x10\x02\x12\x08\n\x04\x42OOL\x10\x03\"\xf7\x01\n\x11TranslatedMessage\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.openxc.TranslatedMessage.Type\x12\x0c\n\x04name\x18\x02 \x01(\t\x12#\n\x05value\x18\x03 \x01(\x0b\x32\x14.openxc.DynamicField\x12#\n\x05\x65vent\x18\x04 \x01(\x0b\x32\x14.openxc.DynamicField\"\\\n\x04Type\x12\n\n\x06STRING\x10\x01\x12\x07\n\x03NUM\x10\x02\x12\x08\n\x04\x42OOL\x10\x03\x12\x12\n\x0e\x45VENTED_STRING\x10\x04\x12\x0f\n\x0b\x45VENTED_NUM\x10\x05\x12\x10\n\x0c\x45VENTED_BOOL\x10\x06\x42\x1c\n\ncom.openxcB\x0e\x42inaryMessages')
+  serialized_pb='\n\x0copenxc.proto\x12\x06openxc\"\x94\x03\n\x0eVehicleMessage\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openxc.VehicleMessage.Type\x12\'\n\x0braw_message\x18\x02 \x01(\x0b\x32\x12.openxc.RawMessage\x12\x35\n\x12translated_message\x18\x03 \x01(\x0b\x32\x19.openxc.TranslatedMessage\x12\x37\n\x13\x64iagnostic_response\x18\x04 \x01(\x0b\x32\x1a.openxc.DiagnosticResponse\x12/\n\x0f\x63ontrol_command\x18\x05 \x01(\x0b\x32\x16.openxc.ControlCommand\x12\x31\n\x10\x63ommand_response\x18\x06 \x01(\x0b\x32\x17.openxc.CommandResponse\"Z\n\x04Type\x12\x07\n\x03RAW\x10\x01\x12\x0e\n\nTRANSLATED\x10\x02\x12\x0e\n\nDIAGNOSTIC\x10\x03\x12\x13\n\x0f\x43ONTROL_COMMAND\x10\x04\x12\x14\n\x10\x43OMMAND_RESPONSE\x10\x05\"\x96\x01\n\nRawMessage\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x12\n\nmessage_id\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12.\n\x06\x66ormat\x18\x04 \x01(\x0e\x32\x1e.openxc.RawMessage.FrameFormat\")\n\x0b\x46rameFormat\x12\x0c\n\x08STANDARD\x10\x01\x12\x0c\n\x08\x45XTENDED\x10\x02\"\xb8\x04\n\x0e\x43ontrolCommand\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openxc.ControlCommand.Type\x12<\n\x12\x64iagnostic_request\x18\x02 \x01(\x0b\x32 .openxc.DiagnosticControlCommand\x12G\n\x18passthrough_mode_request\x18\x03 \x01(\x0b\x32%.openxc.PassthroughModeControlCommand\x12O\n acceptance_filter_bypass_command\x18\x04 \x01(\x0b\x32%.openxc.AcceptanceFilterBypassCommand\x12<\n\x16payload_format_command\x18\x05 \x01(\x0b\x32\x1c.openxc.PayloadFormatCommand\x12O\n predefined_obd2_requests_command\x18\x06 \x01(\x0b\x32%.openxc.PredefinedObd2RequestsCommand\"\x93\x01\n\x04Type\x12\x0b\n\x07VERSION\x10\x01\x12\r\n\tDEVICE_ID\x10\x02\x12\x0e\n\nDIAGNOSTIC\x10\x03\x12\x0f\n\x0bPASSTHROUGH\x10\x04\x12\x1c\n\x18\x41\x43\x43\x45PTANCE_FILTER_BYPASS\x10\x05\x12\x12\n\x0ePAYLOAD_FORMAT\x10\x06\x12\x1c\n\x18PREDEFINED_OBD2_REQUESTS\x10\x07\"\x9e\x01\n\x18\x44iagnosticControlCommand\x12*\n\x07request\x18\x01 \x01(\x0b\x32\x19.openxc.DiagnosticRequest\x12\x37\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\'.openxc.DiagnosticControlCommand.Action\"\x1d\n\x06\x41\x63tion\x12\x07\n\x03\x41\x44\x44\x10\x01\x12\n\n\x06\x43\x41NCEL\x10\x02\"=\n\x1dPassthroughModeControlCommand\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\"<\n\x1d\x41\x63\x63\x65ptanceFilterBypassCommand\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x0e\n\x06\x62ypass\x18\x02 \x01(\x08\"{\n\x14PayloadFormatCommand\x12:\n\x06\x66ormat\x18\x01 \x01(\x0e\x32*.openxc.PayloadFormatCommand.PayloadFormat\"\'\n\rPayloadFormat\x12\x08\n\x04JSON\x10\x01\x12\x0c\n\x08PROTOBUF\x10\x02\"0\n\x1dPredefinedObd2RequestsCommand\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"]\n\x0f\x43ommandResponse\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openxc.ControlCommand.Type\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\x08\"\xfd\x01\n\x11\x44iagnosticRequest\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x12\n\nmessage_id\x18\x02 \x01(\r\x12\x0c\n\x04mode\x18\x03 \x01(\r\x12\x0b\n\x03pid\x18\x04 \x01(\r\x12\x0f\n\x07payload\x18\x05 \x01(\x0c\x12\x1a\n\x12multiple_responses\x18\x06 \x01(\x08\x12\x11\n\tfrequency\x18\x07 \x01(\x01\x12\x0c\n\x04name\x18\x08 \x01(\t\x12;\n\x0c\x64\x65\x63oded_type\x18\t \x01(\x0e\x32%.openxc.DiagnosticRequest.DecodedType\"!\n\x0b\x44\x65\x63odedType\x12\x08\n\x04NONE\x10\x01\x12\x08\n\x04OBD2\x10\x02\"\xa1\x01\n\x12\x44iagnosticResponse\x12\x0b\n\x03\x62us\x18\x01 \x01(\x05\x12\x12\n\nmessage_id\x18\x02 \x01(\r\x12\x0c\n\x04mode\x18\x03 \x01(\r\x12\x0b\n\x03pid\x18\x04 \x01(\r\x12\x0f\n\x07success\x18\x05 \x01(\x08\x12\x1e\n\x16negative_response_code\x18\x06 \x01(\r\x12\x0f\n\x07payload\x18\x07 \x01(\x0c\x12\r\n\x05value\x18\x08 \x01(\x01\"\xa2\x01\n\x0c\x44ynamicField\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.openxc.DynamicField.Type\x12\x14\n\x0cstring_value\x18\x02 \x01(\t\x12\x15\n\rnumeric_value\x18\x03 \x01(\x01\x12\x15\n\rboolean_value\x18\x04 \x01(\x08\"%\n\x04Type\x12\n\n\x06STRING\x10\x01\x12\x07\n\x03NUM\x10\x02\x12\x08\n\x04\x42OOL\x10\x03\"\xf7\x01\n\x11TranslatedMessage\x12,\n\x04type\x18\x01 \x01(\x0e\x32\x1e.openxc.TranslatedMessage.Type\x12\x0c\n\x04name\x18\x02 \x01(\t\x12#\n\x05value\x18\x03 \x01(\x0b\x32\x14.openxc.DynamicField\x12#\n\x05\x65vent\x18\x04 \x01(\x0b\x32\x14.openxc.DynamicField\"\\\n\x04Type\x12\n\n\x06STRING\x10\x01\x12\x07\n\x03NUM\x10\x02\x12\x08\n\x04\x42OOL\x10\x03\x12\x12\n\x0e\x45VENTED_STRING\x10\x04\x12\x0f\n\x0b\x45VENTED_NUM\x10\x05\x12\x10\n\x0c\x45VENTED_BOOL\x10\x06\x42\x1c\n\ncom.openxcB\x0e\x42inaryMessages')
 
 
 
@@ -50,6 +50,27 @@ _VEHICLEMESSAGE_TYPE = _descriptor.EnumDescriptor(
   serialized_end=429,
 )
 
+_RAWMESSAGE_FRAMEFORMAT = _descriptor.EnumDescriptor(
+  name='FrameFormat',
+  full_name='openxc.RawMessage.FrameFormat',
+  filename=None,
+  file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='STANDARD', index=0, number=1,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='EXTENDED', index=1, number=2,
+      options=None,
+      type=None),
+  ],
+  containing_type=None,
+  options=None,
+  serialized_start=541,
+  serialized_end=582,
+)
+
 _CONTROLCOMMAND_TYPE = _descriptor.EnumDescriptor(
   name='Type',
   full_name='openxc.ControlCommand.Type',
@@ -87,8 +108,8 @@ _CONTROLCOMMAND_TYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=914,
-  serialized_end=1061,
+  serialized_start=1006,
+  serialized_end=1153,
 )
 
 _DIAGNOSTICCONTROLCOMMAND_ACTION = _descriptor.EnumDescriptor(
@@ -108,8 +129,8 @@ _DIAGNOSTICCONTROLCOMMAND_ACTION = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=1193,
-  serialized_end=1222,
+  serialized_start=1285,
+  serialized_end=1314,
 )
 
 _PAYLOADFORMATCOMMAND_PAYLOADFORMAT = _descriptor.EnumDescriptor(
@@ -129,8 +150,8 @@ _PAYLOADFORMATCOMMAND_PAYLOADFORMAT = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=1433,
-  serialized_end=1472,
+  serialized_start=1525,
+  serialized_end=1564,
 )
 
 _DIAGNOSTICREQUEST_DECODEDTYPE = _descriptor.EnumDescriptor(
@@ -150,8 +171,8 @@ _DIAGNOSTICREQUEST_DECODEDTYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=1840,
-  serialized_end=1873,
+  serialized_start=1932,
+  serialized_end=1965,
 )
 
 _DYNAMICFIELD_TYPE = _descriptor.EnumDescriptor(
@@ -175,8 +196,8 @@ _DYNAMICFIELD_TYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=2165,
-  serialized_end=2202,
+  serialized_start=2257,
+  serialized_end=2294,
 )
 
 _TRANSLATEDMESSAGE_TYPE = _descriptor.EnumDescriptor(
@@ -212,8 +233,8 @@ _TRANSLATEDMESSAGE_TYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=2360,
-  serialized_end=2452,
+  serialized_start=2452,
+  serialized_end=2544,
 )
 
 
@@ -309,17 +330,25 @@ _RAWMESSAGE = _descriptor.Descriptor(
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       options=None),
+    _descriptor.FieldDescriptor(
+      name='format', full_name='openxc.RawMessage.format', index=3,
+      number=4, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=1,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
+    _RAWMESSAGE_FRAMEFORMAT,
   ],
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=431,
-  serialized_end=490,
+  serialized_start=432,
+  serialized_end=582,
 )
 
 
@@ -382,8 +411,8 @@ _CONTROLCOMMAND = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=493,
-  serialized_end=1061,
+  serialized_start=585,
+  serialized_end=1153,
 )
 
 
@@ -418,8 +447,8 @@ _DIAGNOSTICCONTROLCOMMAND = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1064,
-  serialized_end=1222,
+  serialized_start=1156,
+  serialized_end=1314,
 )
 
 
@@ -453,8 +482,8 @@ _PASSTHROUGHMODECONTROLCOMMAND = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1224,
-  serialized_end=1285,
+  serialized_start=1316,
+  serialized_end=1377,
 )
 
 
@@ -488,8 +517,8 @@ _ACCEPTANCEFILTERBYPASSCOMMAND = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1287,
-  serialized_end=1347,
+  serialized_start=1379,
+  serialized_end=1439,
 )
 
 
@@ -517,8 +546,8 @@ _PAYLOADFORMATCOMMAND = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1349,
-  serialized_end=1472,
+  serialized_start=1441,
+  serialized_end=1564,
 )
 
 
@@ -545,8 +574,8 @@ _PREDEFINEDOBD2REQUESTSCOMMAND = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1474,
-  serialized_end=1522,
+  serialized_start=1566,
+  serialized_end=1614,
 )
 
 
@@ -587,8 +616,8 @@ _COMMANDRESPONSE = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1524,
-  serialized_end=1617,
+  serialized_start=1616,
+  serialized_end=1709,
 )
 
 
@@ -672,8 +701,8 @@ _DIAGNOSTICREQUEST = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1620,
-  serialized_end=1873,
+  serialized_start=1712,
+  serialized_end=1965,
 )
 
 
@@ -749,8 +778,8 @@ _DIAGNOSTICRESPONSE = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1876,
-  serialized_end=2037,
+  serialized_start=1968,
+  serialized_end=2129,
 )
 
 
@@ -799,8 +828,8 @@ _DYNAMICFIELD = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=2040,
-  serialized_end=2202,
+  serialized_start=2132,
+  serialized_end=2294,
 )
 
 
@@ -849,8 +878,8 @@ _TRANSLATEDMESSAGE = _descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=2205,
-  serialized_end=2452,
+  serialized_start=2297,
+  serialized_end=2544,
 )
 
 _VEHICLEMESSAGE.fields_by_name['type'].enum_type = _VEHICLEMESSAGE_TYPE
@@ -860,6 +889,8 @@ _VEHICLEMESSAGE.fields_by_name['diagnostic_response'].message_type = _DIAGNOSTIC
 _VEHICLEMESSAGE.fields_by_name['control_command'].message_type = _CONTROLCOMMAND
 _VEHICLEMESSAGE.fields_by_name['command_response'].message_type = _COMMANDRESPONSE
 _VEHICLEMESSAGE_TYPE.containing_type = _VEHICLEMESSAGE;
+_RAWMESSAGE.fields_by_name['format'].enum_type = _RAWMESSAGE_FRAMEFORMAT
+_RAWMESSAGE_FRAMEFORMAT.containing_type = _RAWMESSAGE;
 _CONTROLCOMMAND.fields_by_name['type'].enum_type = _CONTROLCOMMAND_TYPE
 _CONTROLCOMMAND.fields_by_name['diagnostic_request'].message_type = _DIAGNOSTICCONTROLCOMMAND
 _CONTROLCOMMAND.fields_by_name['passthrough_mode_request'].message_type = _PASSTHROUGHMODECONTROLCOMMAND
index c2b7f7c..3b23be5 100644 (file)
@@ -16,9 +16,14 @@ message VehicleMessage {
 }
 
 message RawMessage {
+    enum FrameFormat {
+        STANDARD = 1;
+        EXTENDED = 2;
+    }
     optional int32 bus = 1;
     optional uint32 message_id = 2;
     optional bytes data = 3;
+    optional FrameFormat format = 4;
 }
 
 message ControlCommand {