// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_VehicleInfo.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Com.Fca.Uconnect.Global {

  /// <summary>Holder for reflection information generated from Global_Uconnect_VehicleInfo.proto</summary>
  public static partial class GlobalUconnectVehicleInfoReflection {

    #region Descriptor
    /// <summary>File descriptor for Global_Uconnect_VehicleInfo.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static GlobalUconnectVehicleInfoReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiFHbG9iYWxfVWNvbm5lY3RfVmVoaWNsZUluZm8ucHJvdG8SF2NvbS5mY2Eu",
            "dWNvbm5lY3QuZ2xvYmFsGhpHbG9iYWxfVWNvbm5lY3RfR05TUy5wcm90byKn",
            "BwoLVmVoaWNsZUluZm8SOgoPdmVoaWNsZUxvY2F0aW9uGAEgASgLMiEuY29t",
            "LmZjYS51Y29ubmVjdC5nbG9iYWwuTG9jYXRpb24SFAoMdmVoaWNsZVNwZWVk",
            "GAQgASgCEhAKCG9kb21ldGVyGAUgASgFEk8KEGVuZ2luZVN0YXR1c0VudW0Y",
            "BiABKA4yNS5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5WZWhpY2xlSW5mby5F",
            "bmdpbmVTdGF0dXNFbnVtEhAKCGxhbmd1YWdlGAcgASgJEg8KB2NvdW50cnkY",
            "CCABKAkSSQoLdmVoaWNsZVR5cGUYCSABKA4yNC5jb20uZmNhLnVjb25uZWN0",
            "Lmdsb2JhbC5WZWhpY2xlSW5mby5WZWhpY2xlVHlwZUVudW0SCwoDdmluGAog",
            "ASgJEg0KBWJyYW5kGAsgASgJEg0KBW1vZGVsGA4gASgJEgwKBHllYXIYDyAB",
            "KAkSQQoWcmVjZW50VmVoaWNsZUxvY2F0aW9uMRgMIAEoCzIhLmNvbS5mY2Eu",
            "dWNvbm5lY3QuZ2xvYmFsLkxvY2F0aW9uEkEKFnJlY2VudFZlaGljbGVMb2Nh",
            "dGlvbjIYDSABKAsyIS5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5Mb2NhdGlv",
            "biJXChBFbmdpbmVTdGF0dXNFbnVtEggKBFNUT1AQABIJCgVDUkFOSxABEggK",
            "BElETEUQAhIHCgNSVU4QAxIJCgVTVEFMTBAEEhAKDFJFUVVFU1RTVEFSVBAF",
            "ItwCCg9WZWhpY2xlVHlwZUVudW0SFQoRUEFTU0VOR0VSX0NMQVNTTTEQABIb",
            "ChdCVVNFU0FORENPQUNIRVNfQ0xBU1NNMhABEhsKF0JVU0VTQU5EQ09BQ0hF",
            "U19DTEFTU00zEAISGwoXTElHSFRDT01NRVJDSUFMX0NMQVNTTjEQAxIVChFI",
            "RUFWWURVVFlfQ0xBU1NOMhAEEhUKEUhFQVZZRFVUWV9DTEFTU04zEAUSFwoT",
            "TU9UT1JDWUNMRV9DTEFTU0wxRRAGEhcKE01PVE9SQ1lDTEVfQ0xBU1NMMkUQ",
            "BxIXChNNT1RPUkNZQ0xFX0NMQVNTTDNFEAgSFwoTTU9UT1JDWUNMRV9DTEFT",
            "U0w0RRAJEhcKE01PVE9SQ1lDTEVfQ0xBU1NMNUUQChIXChNNT1RPUkNZQ0xF",
            "X0NMQVNTTDZFEAsSFwoTTU9UT1JDWUNMRV9DTEFTU0w3RRAMIpUECgxUaXJl",
            "UHJlc3N1cmUSFgoOZmxUaXJlUHJlc3N1cmUYASABKAISRwoJZmxUaXJlU3Rz",
            "GAcgASgOMjQuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuVGlyZVByZXNzdXJl",
            "LlRpcmVTdGF0dXNFbnVtEhYKDmZyVGlyZVByZXNzdXJlGAIgASgCEkcKCWZy",
            "VGlyZVN0cxgIIAEoDjI0LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlRpcmVQ",
            "cmVzc3VyZS5UaXJlU3RhdHVzRW51bRIWCg5ybFRpcmVQcmVzc3VyZRgDIAEo",
            "AhJHCglybFRpcmVTdHMYCSABKA4yNC5jb20uZmNhLnVjb25uZWN0Lmdsb2Jh",
            "bC5UaXJlUHJlc3N1cmUuVGlyZVN0YXR1c0VudW0SFgoOcnJUaXJlUHJlc3N1",
            "cmUYBCABKAISRwoJcnJUaXJlU3RzGAogASgOMjQuY29tLmZjYS51Y29ubmVj",
            "dC5nbG9iYWwuVGlyZVByZXNzdXJlLlRpcmVTdGF0dXNFbnVtEhcKD3JsMlRp",
            "cmVQcmVzc3VyZRgFIAEoAhIXCg9ycjJUaXJlUHJlc3N1cmUYBiABKAIiTwoO",
            "VGlyZVN0YXR1c0VudW0SCgoGTk9STUFMEAASBwoDTE9XEAESCAoESElHSBAC",
            "EgcKA1NOQRADEhUKEVNJR05JRklDQU5UTFlfTE9XEAQisQcKDVZlaGljbGVT",
            "dGF0dXMSWAoRdmVoaWNsZVN0YXR1c1R5cGUYBiADKAsyPS5jb20uZmNhLnVj",
            "b25uZWN0Lmdsb2JhbC5WZWhpY2xlU3RhdHVzLlZlaGljbGVTdGF0dXNUeXBl",
            "RW50cnkSZAoXdmVoaWNsZVN0YXR1c1BhcmFtZXRlcnMYASADKAsyQy5jb20u",
            "ZmNhLnVjb25uZWN0Lmdsb2JhbC5WZWhpY2xlU3RhdHVzLlZlaGljbGVTdGF0",
            "dXNQYXJhbWV0ZXJzRW50cnkSUQoQZW5naW5lU3RhdHVzRW51bRgCIAEoDjI3",
            "LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlZlaGljbGVTdGF0dXMuRW5naW5l",
            "U3RhdHVzRW51bRIRCglmdWVsTGV2ZWwYAyABKAUSEAoIb2RvbWV0ZXIYBCAB",
            "KAUSGwoTaW50ZXJpb3JUZW1wZXJhdHVyZRgFIAEoBRI+ChN2ZWhpY2xlTG9j",
            "YXRpb25UeXBlGAcgASgLMiEuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuTG9j",
            "YXRpb24aZQoWVmVoaWNsZVN0YXR1c1R5cGVFbnRyeRILCgNrZXkYASABKAkS",
            "OgoFdmFsdWUYAiABKA4yKy5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5WZWhp",
            "Y2xlU3RhdHVzLlR5cGU6AjgBGm0KHFZlaGljbGVTdGF0dXNQYXJhbWV0ZXJz",
            "RW50cnkSCwoDa2V5GAEgASgJEjwKBXZhbHVlGAIgASgOMi0uY29tLmZjYS51",
            "Y29ubmVjdC5nbG9iYWwuVmVoaWNsZVN0YXR1cy5TdGF0dXM6AjgBIlcKEEVu",
            "Z2luZVN0YXR1c0VudW0SCAoEU1RPUBAAEgkKBUNSQU5LEAESCAoESURMRRAC",
            "EgcKA1JVThADEgkKBVNUQUxMEAQSEAoMUkVRVUVTVFNUQVJUEAUiSAoGU3Rh",
            "dHVzEgoKBkNMT1NFRBAAEhMKD0NMT1NFRF9VTkxPQ0tFRBABEhEKDUNMT1NF",
            "RF9MT0NLRUQQAhIKCgZPUEVORUQQAyKRAQoEVHlwZRIKCgZGTERPT1IQABIK",
            "CgZGUkRPT1IQARIKCgZSTERPT1IQAhIKCgZSUkRPT1IQAxIMCghGTFdJTkRP",
            "VxAEEgwKCEZSV0lORE9XEAUSDAoITExXSU5ET1cQBhIMCghMUldJTkRPVxAH",
            "EggKBEhPT0QQCBIJCgVUUlVOSxAJEgwKCExJRlRHQVRFEApQAGIGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Com.Fca.Uconnect.Global.GlobalUconnectGNSSReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehicleInfo), global::Com.Fca.Uconnect.Global.VehicleInfo.Parser, new[]{ "VehicleLocation", "VehicleSpeed", "Odometer", "EngineStatusEnum", "Language", "Country", "VehicleType", "Vin", "Brand", "Model", "Year", "RecentVehicleLocation1", "RecentVehicleLocation2" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehicleInfo.Types.EngineStatusEnum), typeof(global::Com.Fca.Uconnect.Global.VehicleInfo.Types.VehicleTypeEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.TirePressure), global::Com.Fca.Uconnect.Global.TirePressure.Parser, new[]{ "FlTirePressure", "FlTireSts", "FrTirePressure", "FrTireSts", "RlTirePressure", "RlTireSts", "RrTirePressure", "RrTireSts", "Rl2TirePressure", "Rr2TirePressure" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehicleStatus), global::Com.Fca.Uconnect.Global.VehicleStatus.Parser, new[]{ "VehicleStatusType", "VehicleStatusParameters", "EngineStatusEnum", "FuelLevel", "Odometer", "InteriorTemperature", "VehicleLocationType" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehicleStatus.Types.EngineStatusEnum), typeof(global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Status), typeof(global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Type) }, new pbr::GeneratedClrTypeInfo[] { null, null, })
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This message is common for ECall and Roadside assistance to get Vehicle Information.
  /// </summary>
  public sealed partial class VehicleInfo : pb::IMessage<VehicleInfo> {
    private static readonly pb::MessageParser<VehicleInfo> _parser = new pb::MessageParser<VehicleInfo>(() => new VehicleInfo());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VehicleInfo> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectVehicleInfoReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleInfo() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleInfo(VehicleInfo other) : this() {
      VehicleLocation = other.vehicleLocation_ != null ? other.VehicleLocation.Clone() : null;
      vehicleSpeed_ = other.vehicleSpeed_;
      odometer_ = other.odometer_;
      engineStatusEnum_ = other.engineStatusEnum_;
      language_ = other.language_;
      country_ = other.country_;
      vehicleType_ = other.vehicleType_;
      vin_ = other.vin_;
      brand_ = other.brand_;
      model_ = other.model_;
      year_ = other.year_;
      RecentVehicleLocation1 = other.recentVehicleLocation1_ != null ? other.RecentVehicleLocation1.Clone() : null;
      RecentVehicleLocation2 = other.recentVehicleLocation2_ != null ? other.RecentVehicleLocation2.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleInfo Clone() {
      return new VehicleInfo(this);
    }

    /// <summary>Field number for the "vehicleLocation" field.</summary>
    public const int VehicleLocationFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.Location vehicleLocation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Location VehicleLocation {
      get { return vehicleLocation_; }
      set {
        vehicleLocation_ = value;
      }
    }

    /// <summary>Field number for the "vehicleSpeed" field.</summary>
    public const int VehicleSpeedFieldNumber = 4;
    private float vehicleSpeed_;
    /// <summary>
    /// string   vehicleHeading=2;///Direction where Vehicle is Pointing to .
    /// int32    estimatedHeadingError=3;//This represents error value in case if Vehicle Heading(0x80000000) does not have a valid measurement.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float VehicleSpeed {
      get { return vehicleSpeed_; }
      set {
        vehicleSpeed_ = value;
      }
    }

    /// <summary>Field number for the "odometer" field.</summary>
    public const int OdometerFieldNumber = 5;
    private int odometer_;
    /// <summary>
    //// Total distance traveled by Vehicle.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Odometer {
      get { return odometer_; }
      set {
        odometer_ = value;
      }
    }

    /// <summary>Field number for the "engineStatusEnum" field.</summary>
    public const int EngineStatusEnumFieldNumber = 6;
    private global::Com.Fca.Uconnect.Global.VehicleInfo.Types.EngineStatusEnum engineStatusEnum_ = 0;
    /// <summary>
    ////The status of the Engine/Ignition
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleInfo.Types.EngineStatusEnum EngineStatusEnum {
      get { return engineStatusEnum_; }
      set {
        engineStatusEnum_ = value;
      }
    }

    /// <summary>Field number for the "language" field.</summary>
    public const int LanguageFieldNumber = 7;
    private string language_ = "";
    /// <summary>
    //// The values shall be formatted according to the format 'ISO-639-1 Language Code'_'ISO-3166-1 alpha2 Country Code'
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Language {
      get { return language_; }
      set {
        language_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "country" field.</summary>
    public const int CountryFieldNumber = 8;
    private string country_ = "";
    /// <summary>
    //// The values shall be formatted according to the ISO Alpha-2 standard.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Country {
      get { return country_; }
      set {
        country_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "vehicleType" field.</summary>
    public const int VehicleTypeFieldNumber = 9;
    private global::Com.Fca.Uconnect.Global.VehicleInfo.Types.VehicleTypeEnum vehicleType_ = 0;
    /// <summary>
    ///The Type of the Vehicle that this is.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleInfo.Types.VehicleTypeEnum VehicleType {
      get { return vehicleType_; }
      set {
        vehicleType_ = value;
      }
    }

    /// <summary>Field number for the "vin" field.</summary>
    public const int VinFieldNumber = 10;
    private string vin_ = "";
    /// <summary>
    ////Vehicle Identification Number
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Vin {
      get { return vin_; }
      set {
        vin_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "brand" field.</summary>
    public const int BrandFieldNumber = 11;
    private string brand_ = "";
    /// <summary>
    ////Vehicle Brand
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Brand {
      get { return brand_; }
      set {
        brand_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "model" field.</summary>
    public const int ModelFieldNumber = 14;
    private string model_ = "";
    /// <summary>
    //// Vehicle Model
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Model {
      get { return model_; }
      set {
        model_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "year" field.</summary>
    public const int YearFieldNumber = 15;
    private string year_ = "";
    /// <summary>
    //// Vehicle Year
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Year {
      get { return year_; }
      set {
        year_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "recentVehicleLocation1" field.</summary>
    public const int RecentVehicleLocation1FieldNumber = 12;
    private global::Com.Fca.Uconnect.Global.Location recentVehicleLocation1_;
    /// <summary>
    ////This is to know which side Major highway  the vehicle is located on,This information is needed for Routing an Emergency purpose.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Location RecentVehicleLocation1 {
      get { return recentVehicleLocation1_; }
      set {
        recentVehicleLocation1_ = value;
      }
    }

    /// <summary>Field number for the "recentVehicleLocation2" field.</summary>
    public const int RecentVehicleLocation2FieldNumber = 13;
    private global::Com.Fca.Uconnect.Global.Location recentVehicleLocation2_;
    /// <summary>
    ////This information is needed for Routing an Emergency purpose.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Location RecentVehicleLocation2 {
      get { return recentVehicleLocation2_; }
      set {
        recentVehicleLocation2_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VehicleInfo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VehicleInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(VehicleLocation, other.VehicleLocation)) return false;
      if (VehicleSpeed != other.VehicleSpeed) return false;
      if (Odometer != other.Odometer) return false;
      if (EngineStatusEnum != other.EngineStatusEnum) return false;
      if (Language != other.Language) return false;
      if (Country != other.Country) return false;
      if (VehicleType != other.VehicleType) return false;
      if (Vin != other.Vin) return false;
      if (Brand != other.Brand) return false;
      if (Model != other.Model) return false;
      if (Year != other.Year) return false;
      if (!object.Equals(RecentVehicleLocation1, other.RecentVehicleLocation1)) return false;
      if (!object.Equals(RecentVehicleLocation2, other.RecentVehicleLocation2)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (vehicleLocation_ != null) hash ^= VehicleLocation.GetHashCode();
      if (VehicleSpeed != 0F) hash ^= VehicleSpeed.GetHashCode();
      if (Odometer != 0) hash ^= Odometer.GetHashCode();
      if (EngineStatusEnum != 0) hash ^= EngineStatusEnum.GetHashCode();
      if (Language.Length != 0) hash ^= Language.GetHashCode();
      if (Country.Length != 0) hash ^= Country.GetHashCode();
      if (VehicleType != 0) hash ^= VehicleType.GetHashCode();
      if (Vin.Length != 0) hash ^= Vin.GetHashCode();
      if (Brand.Length != 0) hash ^= Brand.GetHashCode();
      if (Model.Length != 0) hash ^= Model.GetHashCode();
      if (Year.Length != 0) hash ^= Year.GetHashCode();
      if (recentVehicleLocation1_ != null) hash ^= RecentVehicleLocation1.GetHashCode();
      if (recentVehicleLocation2_ != null) hash ^= RecentVehicleLocation2.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (vehicleLocation_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(VehicleLocation);
      }
      if (VehicleSpeed != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(VehicleSpeed);
      }
      if (Odometer != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(Odometer);
      }
      if (EngineStatusEnum != 0) {
        output.WriteRawTag(48);
        output.WriteEnum((int) EngineStatusEnum);
      }
      if (Language.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Language);
      }
      if (Country.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Country);
      }
      if (VehicleType != 0) {
        output.WriteRawTag(72);
        output.WriteEnum((int) VehicleType);
      }
      if (Vin.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Vin);
      }
      if (Brand.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(Brand);
      }
      if (recentVehicleLocation1_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(RecentVehicleLocation1);
      }
      if (recentVehicleLocation2_ != null) {
        output.WriteRawTag(106);
        output.WriteMessage(RecentVehicleLocation2);
      }
      if (Model.Length != 0) {
        output.WriteRawTag(114);
        output.WriteString(Model);
      }
      if (Year.Length != 0) {
        output.WriteRawTag(122);
        output.WriteString(Year);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (vehicleLocation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VehicleLocation);
      }
      if (VehicleSpeed != 0F) {
        size += 1 + 4;
      }
      if (Odometer != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Odometer);
      }
      if (EngineStatusEnum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EngineStatusEnum);
      }
      if (Language.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Language);
      }
      if (Country.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Country);
      }
      if (VehicleType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) VehicleType);
      }
      if (Vin.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Vin);
      }
      if (Brand.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Brand);
      }
      if (Model.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Model);
      }
      if (Year.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Year);
      }
      if (recentVehicleLocation1_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RecentVehicleLocation1);
      }
      if (recentVehicleLocation2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RecentVehicleLocation2);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehicleInfo other) {
      if (other == null) {
        return;
      }
      if (other.vehicleLocation_ != null) {
        if (vehicleLocation_ == null) {
          vehicleLocation_ = new global::Com.Fca.Uconnect.Global.Location();
        }
        VehicleLocation.MergeFrom(other.VehicleLocation);
      }
      if (other.VehicleSpeed != 0F) {
        VehicleSpeed = other.VehicleSpeed;
      }
      if (other.Odometer != 0) {
        Odometer = other.Odometer;
      }
      if (other.EngineStatusEnum != 0) {
        EngineStatusEnum = other.EngineStatusEnum;
      }
      if (other.Language.Length != 0) {
        Language = other.Language;
      }
      if (other.Country.Length != 0) {
        Country = other.Country;
      }
      if (other.VehicleType != 0) {
        VehicleType = other.VehicleType;
      }
      if (other.Vin.Length != 0) {
        Vin = other.Vin;
      }
      if (other.Brand.Length != 0) {
        Brand = other.Brand;
      }
      if (other.Model.Length != 0) {
        Model = other.Model;
      }
      if (other.Year.Length != 0) {
        Year = other.Year;
      }
      if (other.recentVehicleLocation1_ != null) {
        if (recentVehicleLocation1_ == null) {
          recentVehicleLocation1_ = new global::Com.Fca.Uconnect.Global.Location();
        }
        RecentVehicleLocation1.MergeFrom(other.RecentVehicleLocation1);
      }
      if (other.recentVehicleLocation2_ != null) {
        if (recentVehicleLocation2_ == null) {
          recentVehicleLocation2_ = new global::Com.Fca.Uconnect.Global.Location();
        }
        RecentVehicleLocation2.MergeFrom(other.RecentVehicleLocation2);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (vehicleLocation_ == null) {
              vehicleLocation_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            input.ReadMessage(vehicleLocation_);
            break;
          }
          case 37: {
            VehicleSpeed = input.ReadFloat();
            break;
          }
          case 40: {
            Odometer = input.ReadInt32();
            break;
          }
          case 48: {
            engineStatusEnum_ = (global::Com.Fca.Uconnect.Global.VehicleInfo.Types.EngineStatusEnum) input.ReadEnum();
            break;
          }
          case 58: {
            Language = input.ReadString();
            break;
          }
          case 66: {
            Country = input.ReadString();
            break;
          }
          case 72: {
            vehicleType_ = (global::Com.Fca.Uconnect.Global.VehicleInfo.Types.VehicleTypeEnum) input.ReadEnum();
            break;
          }
          case 82: {
            Vin = input.ReadString();
            break;
          }
          case 90: {
            Brand = input.ReadString();
            break;
          }
          case 98: {
            if (recentVehicleLocation1_ == null) {
              recentVehicleLocation1_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            input.ReadMessage(recentVehicleLocation1_);
            break;
          }
          case 106: {
            if (recentVehicleLocation2_ == null) {
              recentVehicleLocation2_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            input.ReadMessage(recentVehicleLocation2_);
            break;
          }
          case 114: {
            Model = input.ReadString();
            break;
          }
          case 122: {
            Year = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehicleInfo message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum EngineStatusEnum {
        [pbr::OriginalName("STOP")] Stop = 0,
        [pbr::OriginalName("CRANK")] Crank = 1,
        [pbr::OriginalName("IDLE")] Idle = 2,
        [pbr::OriginalName("RUN")] Run = 3,
        [pbr::OriginalName("STALL")] Stall = 4,
        [pbr::OriginalName("REQUESTSTART")] Requeststart = 5,
      }

      public enum VehicleTypeEnum {
        [pbr::OriginalName("PASSENGER_CLASSM1")] PassengerClassm1 = 0,
        [pbr::OriginalName("BUSESANDCOACHES_CLASSM2")] BusesandcoachesClassm2 = 1,
        [pbr::OriginalName("BUSESANDCOACHES_CLASSM3")] BusesandcoachesClassm3 = 2,
        [pbr::OriginalName("LIGHTCOMMERCIAL_CLASSN1")] LightcommercialClassn1 = 3,
        [pbr::OriginalName("HEAVYDUTY_CLASSN2")] HeavydutyClassn2 = 4,
        [pbr::OriginalName("HEAVYDUTY_CLASSN3")] HeavydutyClassn3 = 5,
        [pbr::OriginalName("MOTORCYCLE_CLASSL1E")] MotorcycleClassl1E = 6,
        [pbr::OriginalName("MOTORCYCLE_CLASSL2E")] MotorcycleClassl2E = 7,
        [pbr::OriginalName("MOTORCYCLE_CLASSL3E")] MotorcycleClassl3E = 8,
        [pbr::OriginalName("MOTORCYCLE_CLASSL4E")] MotorcycleClassl4E = 9,
        [pbr::OriginalName("MOTORCYCLE_CLASSL5E")] MotorcycleClassl5E = 10,
        [pbr::OriginalName("MOTORCYCLE_CLASSL6E")] MotorcycleClassl6E = 11,
        [pbr::OriginalName("MOTORCYCLE_CLASSL7E")] MotorcycleClassl7E = 12,
      }

    }
    #endregion

  }

  public sealed partial class TirePressure : pb::IMessage<TirePressure> {
    private static readonly pb::MessageParser<TirePressure> _parser = new pb::MessageParser<TirePressure>(() => new TirePressure());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<TirePressure> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectVehicleInfoReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TirePressure() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TirePressure(TirePressure other) : this() {
      flTirePressure_ = other.flTirePressure_;
      flTireSts_ = other.flTireSts_;
      frTirePressure_ = other.frTirePressure_;
      frTireSts_ = other.frTireSts_;
      rlTirePressure_ = other.rlTirePressure_;
      rlTireSts_ = other.rlTireSts_;
      rrTirePressure_ = other.rrTirePressure_;
      rrTireSts_ = other.rrTireSts_;
      rl2TirePressure_ = other.rl2TirePressure_;
      rr2TirePressure_ = other.rr2TirePressure_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TirePressure Clone() {
      return new TirePressure(this);
    }

    /// <summary>Field number for the "flTirePressure" field.</summary>
    public const int FlTirePressureFieldNumber = 1;
    private float flTirePressure_;
    /// <summary>
    ////Front Left Tire Pressure; psi.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float FlTirePressure {
      get { return flTirePressure_; }
      set {
        flTirePressure_ = value;
      }
    }

    /// <summary>Field number for the "flTireSts" field.</summary>
    public const int FlTireStsFieldNumber = 7;
    private global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum flTireSts_ = 0;
    /// <summary>
    ////Front Left Tire Status.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum FlTireSts {
      get { return flTireSts_; }
      set {
        flTireSts_ = value;
      }
    }

    /// <summary>Field number for the "frTirePressure" field.</summary>
    public const int FrTirePressureFieldNumber = 2;
    private float frTirePressure_;
    /// <summary>
    ////Front Right Tire Pressure; psi.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float FrTirePressure {
      get { return frTirePressure_; }
      set {
        frTirePressure_ = value;
      }
    }

    /// <summary>Field number for the "frTireSts" field.</summary>
    public const int FrTireStsFieldNumber = 8;
    private global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum frTireSts_ = 0;
    /// <summary>
    ////Front Right Tire Status.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum FrTireSts {
      get { return frTireSts_; }
      set {
        frTireSts_ = value;
      }
    }

    /// <summary>Field number for the "rlTirePressure" field.</summary>
    public const int RlTirePressureFieldNumber = 3;
    private float rlTirePressure_;
    /// <summary>
    ////Rear Left Tire Pressure; psi.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RlTirePressure {
      get { return rlTirePressure_; }
      set {
        rlTirePressure_ = value;
      }
    }

    /// <summary>Field number for the "rlTireSts" field.</summary>
    public const int RlTireStsFieldNumber = 9;
    private global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum rlTireSts_ = 0;
    /// <summary>
    ////Rear Left Tire Status.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum RlTireSts {
      get { return rlTireSts_; }
      set {
        rlTireSts_ = value;
      }
    }

    /// <summary>Field number for the "rrTirePressure" field.</summary>
    public const int RrTirePressureFieldNumber = 4;
    private float rrTirePressure_;
    /// <summary>
    ////Rear Right Tire Pressure; psi .
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RrTirePressure {
      get { return rrTirePressure_; }
      set {
        rrTirePressure_ = value;
      }
    }

    /// <summary>Field number for the "rrTireSts" field.</summary>
    public const int RrTireStsFieldNumber = 10;
    private global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum rrTireSts_ = 0;
    /// <summary>
    ////Rear Right Tire Status.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum RrTireSts {
      get { return rrTireSts_; }
      set {
        rrTireSts_ = value;
      }
    }

    /// <summary>Field number for the "rl2TirePressure" field.</summary>
    public const int Rl2TirePressureFieldNumber = 5;
    private float rl2TirePressure_;
    /// <summary>
    ////Rear Left interior (second) Tire Pressure; psi.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Rl2TirePressure {
      get { return rl2TirePressure_; }
      set {
        rl2TirePressure_ = value;
      }
    }

    /// <summary>Field number for the "rr2TirePressure" field.</summary>
    public const int Rr2TirePressureFieldNumber = 6;
    private float rr2TirePressure_;
    /// <summary>
    ////Rear Right interior (second) Tire Pressure; psi.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Rr2TirePressure {
      get { return rr2TirePressure_; }
      set {
        rr2TirePressure_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as TirePressure);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(TirePressure other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (FlTirePressure != other.FlTirePressure) return false;
      if (FlTireSts != other.FlTireSts) return false;
      if (FrTirePressure != other.FrTirePressure) return false;
      if (FrTireSts != other.FrTireSts) return false;
      if (RlTirePressure != other.RlTirePressure) return false;
      if (RlTireSts != other.RlTireSts) return false;
      if (RrTirePressure != other.RrTirePressure) return false;
      if (RrTireSts != other.RrTireSts) return false;
      if (Rl2TirePressure != other.Rl2TirePressure) return false;
      if (Rr2TirePressure != other.Rr2TirePressure) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (FlTirePressure != 0F) hash ^= FlTirePressure.GetHashCode();
      if (FlTireSts != 0) hash ^= FlTireSts.GetHashCode();
      if (FrTirePressure != 0F) hash ^= FrTirePressure.GetHashCode();
      if (FrTireSts != 0) hash ^= FrTireSts.GetHashCode();
      if (RlTirePressure != 0F) hash ^= RlTirePressure.GetHashCode();
      if (RlTireSts != 0) hash ^= RlTireSts.GetHashCode();
      if (RrTirePressure != 0F) hash ^= RrTirePressure.GetHashCode();
      if (RrTireSts != 0) hash ^= RrTireSts.GetHashCode();
      if (Rl2TirePressure != 0F) hash ^= Rl2TirePressure.GetHashCode();
      if (Rr2TirePressure != 0F) hash ^= Rr2TirePressure.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (FlTirePressure != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(FlTirePressure);
      }
      if (FrTirePressure != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(FrTirePressure);
      }
      if (RlTirePressure != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(RlTirePressure);
      }
      if (RrTirePressure != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(RrTirePressure);
      }
      if (Rl2TirePressure != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Rl2TirePressure);
      }
      if (Rr2TirePressure != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(Rr2TirePressure);
      }
      if (FlTireSts != 0) {
        output.WriteRawTag(56);
        output.WriteEnum((int) FlTireSts);
      }
      if (FrTireSts != 0) {
        output.WriteRawTag(64);
        output.WriteEnum((int) FrTireSts);
      }
      if (RlTireSts != 0) {
        output.WriteRawTag(72);
        output.WriteEnum((int) RlTireSts);
      }
      if (RrTireSts != 0) {
        output.WriteRawTag(80);
        output.WriteEnum((int) RrTireSts);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (FlTirePressure != 0F) {
        size += 1 + 4;
      }
      if (FlTireSts != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlTireSts);
      }
      if (FrTirePressure != 0F) {
        size += 1 + 4;
      }
      if (FrTireSts != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FrTireSts);
      }
      if (RlTirePressure != 0F) {
        size += 1 + 4;
      }
      if (RlTireSts != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RlTireSts);
      }
      if (RrTirePressure != 0F) {
        size += 1 + 4;
      }
      if (RrTireSts != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RrTireSts);
      }
      if (Rl2TirePressure != 0F) {
        size += 1 + 4;
      }
      if (Rr2TirePressure != 0F) {
        size += 1 + 4;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TirePressure other) {
      if (other == null) {
        return;
      }
      if (other.FlTirePressure != 0F) {
        FlTirePressure = other.FlTirePressure;
      }
      if (other.FlTireSts != 0) {
        FlTireSts = other.FlTireSts;
      }
      if (other.FrTirePressure != 0F) {
        FrTirePressure = other.FrTirePressure;
      }
      if (other.FrTireSts != 0) {
        FrTireSts = other.FrTireSts;
      }
      if (other.RlTirePressure != 0F) {
        RlTirePressure = other.RlTirePressure;
      }
      if (other.RlTireSts != 0) {
        RlTireSts = other.RlTireSts;
      }
      if (other.RrTirePressure != 0F) {
        RrTirePressure = other.RrTirePressure;
      }
      if (other.RrTireSts != 0) {
        RrTireSts = other.RrTireSts;
      }
      if (other.Rl2TirePressure != 0F) {
        Rl2TirePressure = other.Rl2TirePressure;
      }
      if (other.Rr2TirePressure != 0F) {
        Rr2TirePressure = other.Rr2TirePressure;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 13: {
            FlTirePressure = input.ReadFloat();
            break;
          }
          case 21: {
            FrTirePressure = input.ReadFloat();
            break;
          }
          case 29: {
            RlTirePressure = input.ReadFloat();
            break;
          }
          case 37: {
            RrTirePressure = input.ReadFloat();
            break;
          }
          case 45: {
            Rl2TirePressure = input.ReadFloat();
            break;
          }
          case 53: {
            Rr2TirePressure = input.ReadFloat();
            break;
          }
          case 56: {
            flTireSts_ = (global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum) input.ReadEnum();
            break;
          }
          case 64: {
            frTireSts_ = (global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum) input.ReadEnum();
            break;
          }
          case 72: {
            rlTireSts_ = (global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum) input.ReadEnum();
            break;
          }
          case 80: {
            rrTireSts_ = (global::Com.Fca.Uconnect.Global.TirePressure.Types.TireStatusEnum) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the TirePressure message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum TireStatusEnum {
        /// <summary>
        ////Inflation Normal
        /// </summary>
        [pbr::OriginalName("NORMAL")] Normal = 0,
        /// <summary>
        ////Inflation Low (Under Inflated)
        /// </summary>
        [pbr::OriginalName("LOW")] Low = 1,
        /// <summary>
        //// Inflation High
        /// </summary>
        [pbr::OriginalName("HIGH")] High = 2,
        /// <summary>
        //// Signal not available
        /// </summary>
        [pbr::OriginalName("SNA")] Sna = 3,
        /// <summary>
        //// Significantly Under Inflated)
        /// </summary>
        [pbr::OriginalName("SIGNIFICANTLY_LOW")] SignificantlyLow = 4,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message is to define Each Door/Window/Trunk/Hood/Engine status. Door/Window/Trunk/Hood should only report the status that has changed
  /// </summary>
  public sealed partial class VehicleStatus : pb::IMessage<VehicleStatus> {
    private static readonly pb::MessageParser<VehicleStatus> _parser = new pb::MessageParser<VehicleStatus>(() => new VehicleStatus());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VehicleStatus> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectVehicleInfoReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleStatus() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleStatus(VehicleStatus other) : this() {
      vehicleStatusType_ = other.vehicleStatusType_.Clone();
      vehicleStatusParameters_ = other.vehicleStatusParameters_.Clone();
      engineStatusEnum_ = other.engineStatusEnum_;
      fuelLevel_ = other.fuelLevel_;
      odometer_ = other.odometer_;
      interiorTemperature_ = other.interiorTemperature_;
      VehicleLocationType = other.vehicleLocationType_ != null ? other.VehicleLocationType.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleStatus Clone() {
      return new VehicleStatus(this);
    }

    /// <summary>Field number for the "vehicleStatusType" field.</summary>
    public const int VehicleStatusTypeFieldNumber = 6;
    private static readonly pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Type>.Codec _map_vehicleStatusType_codec
        = new pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Type>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForEnum(16, x => (int) x, x => (global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Type) x), 50);
    private readonly pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Type> vehicleStatusType_ = new pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Type>();
    /// <summary>
    ////This is to identify the status being provided Door/window/Trunk/Hood Status.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Type> VehicleStatusType {
      get { return vehicleStatusType_; }
    }

    /// <summary>Field number for the "vehicleStatusParameters" field.</summary>
    public const int VehicleStatusParametersFieldNumber = 1;
    private static readonly pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Status>.Codec _map_vehicleStatusParameters_codec
        = new pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Status>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForEnum(16, x => (int) x, x => (global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Status) x), 10);
    private readonly pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Status> vehicleStatusParameters_ = new pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Status>();
    /// <summary>
    ////This is the Status.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, global::Com.Fca.Uconnect.Global.VehicleStatus.Types.Status> VehicleStatusParameters {
      get { return vehicleStatusParameters_; }
    }

    /// <summary>Field number for the "engineStatusEnum" field.</summary>
    public const int EngineStatusEnumFieldNumber = 2;
    private global::Com.Fca.Uconnect.Global.VehicleStatus.Types.EngineStatusEnum engineStatusEnum_ = 0;
    /// <summary>
    ////The status of the Engine/Ignition
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleStatus.Types.EngineStatusEnum EngineStatusEnum {
      get { return engineStatusEnum_; }
      set {
        engineStatusEnum_ = value;
      }
    }

    /// <summary>Field number for the "fuelLevel" field.</summary>
    public const int FuelLevelFieldNumber = 3;
    private int fuelLevel_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FuelLevel {
      get { return fuelLevel_; }
      set {
        fuelLevel_ = value;
      }
    }

    /// <summary>Field number for the "odometer" field.</summary>
    public const int OdometerFieldNumber = 4;
    private int odometer_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Odometer {
      get { return odometer_; }
      set {
        odometer_ = value;
      }
    }

    /// <summary>Field number for the "interiorTemperature" field.</summary>
    public const int InteriorTemperatureFieldNumber = 5;
    private int interiorTemperature_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int InteriorTemperature {
      get { return interiorTemperature_; }
      set {
        interiorTemperature_ = value;
      }
    }

    /// <summary>Field number for the "vehicleLocationType" field.</summary>
    public const int VehicleLocationTypeFieldNumber = 7;
    private global::Com.Fca.Uconnect.Global.Location vehicleLocationType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Location VehicleLocationType {
      get { return vehicleLocationType_; }
      set {
        vehicleLocationType_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VehicleStatus);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VehicleStatus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!VehicleStatusType.Equals(other.VehicleStatusType)) return false;
      if (!VehicleStatusParameters.Equals(other.VehicleStatusParameters)) return false;
      if (EngineStatusEnum != other.EngineStatusEnum) return false;
      if (FuelLevel != other.FuelLevel) return false;
      if (Odometer != other.Odometer) return false;
      if (InteriorTemperature != other.InteriorTemperature) return false;
      if (!object.Equals(VehicleLocationType, other.VehicleLocationType)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= VehicleStatusType.GetHashCode();
      hash ^= VehicleStatusParameters.GetHashCode();
      if (EngineStatusEnum != 0) hash ^= EngineStatusEnum.GetHashCode();
      if (FuelLevel != 0) hash ^= FuelLevel.GetHashCode();
      if (Odometer != 0) hash ^= Odometer.GetHashCode();
      if (InteriorTemperature != 0) hash ^= InteriorTemperature.GetHashCode();
      if (vehicleLocationType_ != null) hash ^= VehicleLocationType.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      vehicleStatusParameters_.WriteTo(output, _map_vehicleStatusParameters_codec);
      if (EngineStatusEnum != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) EngineStatusEnum);
      }
      if (FuelLevel != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FuelLevel);
      }
      if (Odometer != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Odometer);
      }
      if (InteriorTemperature != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(InteriorTemperature);
      }
      vehicleStatusType_.WriteTo(output, _map_vehicleStatusType_codec);
      if (vehicleLocationType_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(VehicleLocationType);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += vehicleStatusType_.CalculateSize(_map_vehicleStatusType_codec);
      size += vehicleStatusParameters_.CalculateSize(_map_vehicleStatusParameters_codec);
      if (EngineStatusEnum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EngineStatusEnum);
      }
      if (FuelLevel != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FuelLevel);
      }
      if (Odometer != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Odometer);
      }
      if (InteriorTemperature != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(InteriorTemperature);
      }
      if (vehicleLocationType_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VehicleLocationType);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehicleStatus other) {
      if (other == null) {
        return;
      }
      vehicleStatusType_.Add(other.vehicleStatusType_);
      vehicleStatusParameters_.Add(other.vehicleStatusParameters_);
      if (other.EngineStatusEnum != 0) {
        EngineStatusEnum = other.EngineStatusEnum;
      }
      if (other.FuelLevel != 0) {
        FuelLevel = other.FuelLevel;
      }
      if (other.Odometer != 0) {
        Odometer = other.Odometer;
      }
      if (other.InteriorTemperature != 0) {
        InteriorTemperature = other.InteriorTemperature;
      }
      if (other.vehicleLocationType_ != null) {
        if (vehicleLocationType_ == null) {
          vehicleLocationType_ = new global::Com.Fca.Uconnect.Global.Location();
        }
        VehicleLocationType.MergeFrom(other.VehicleLocationType);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            vehicleStatusParameters_.AddEntriesFrom(input, _map_vehicleStatusParameters_codec);
            break;
          }
          case 16: {
            engineStatusEnum_ = (global::Com.Fca.Uconnect.Global.VehicleStatus.Types.EngineStatusEnum) input.ReadEnum();
            break;
          }
          case 24: {
            FuelLevel = input.ReadInt32();
            break;
          }
          case 32: {
            Odometer = input.ReadInt32();
            break;
          }
          case 40: {
            InteriorTemperature = input.ReadInt32();
            break;
          }
          case 50: {
            vehicleStatusType_.AddEntriesFrom(input, _map_vehicleStatusType_codec);
            break;
          }
          case 58: {
            if (vehicleLocationType_ == null) {
              vehicleLocationType_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            input.ReadMessage(vehicleLocationType_);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehicleStatus message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum EngineStatusEnum {
        [pbr::OriginalName("STOP")] Stop = 0,
        [pbr::OriginalName("CRANK")] Crank = 1,
        [pbr::OriginalName("IDLE")] Idle = 2,
        [pbr::OriginalName("RUN")] Run = 3,
        [pbr::OriginalName("STALL")] Stall = 4,
        [pbr::OriginalName("REQUESTSTART")] Requeststart = 5,
      }

      public enum Status {
        [pbr::OriginalName("CLOSED")] Closed = 0,
        [pbr::OriginalName("CLOSED_UNLOCKED")] ClosedUnlocked = 1,
        [pbr::OriginalName("CLOSED_LOCKED")] ClosedLocked = 2,
        [pbr::OriginalName("OPENED")] Opened = 3,
      }

      public enum Type {
        [pbr::OriginalName("FLDOOR")] Fldoor = 0,
        [pbr::OriginalName("FRDOOR")] Frdoor = 1,
        [pbr::OriginalName("RLDOOR")] Rldoor = 2,
        [pbr::OriginalName("RRDOOR")] Rrdoor = 3,
        [pbr::OriginalName("FLWINDOW")] Flwindow = 4,
        [pbr::OriginalName("FRWINDOW")] Frwindow = 5,
        [pbr::OriginalName("LLWINDOW")] Llwindow = 6,
        [pbr::OriginalName("LRWINDOW")] Lrwindow = 7,
        [pbr::OriginalName("HOOD")] Hood = 8,
        [pbr::OriginalName("TRUNK")] Trunk = 9,
        [pbr::OriginalName("LIFTGATE")] Liftgate = 10,
      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code
