// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_Ext_ECall.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_Ext_ECall.proto</summary>
  public static partial class GlobalUconnectExtECallReflection {

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

    static GlobalUconnectExtECallReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Ch9HbG9iYWxfVWNvbm5lY3RfRXh0X0VDYWxsLnByb3RvEhdjb20uZmNhLnVj",
            "b25uZWN0Lmdsb2JhbBoaR2xvYmFsX1Vjb25uZWN0X0dOU1MucHJvdG8aIUds",
            "b2JhbF9VY29ubmVjdF9WZWhpY2xlSW5mby5wcm90bxocR2xvYmFsX1Vjb25u",
            "ZWN0X0RldmljZS5wcm90bxoeR2xvYmFsX1Vjb25uZWN0X0V4dF9TUURGLnBy",
            "b3RvIqkLCg9FQ2FsbERhdGFVcGxvYWQSOQoLdmVoaWNsZUluZm8YASABKAsy",
            "JC5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5WZWhpY2xlSW5mbxI5Cgt2ZWhp",
            "Y2xlRGF0YRgMIAEoCzIkLmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlZlaGlj",
            "bGVEYXRhEhEKCXRpbWVTdGFtcBgCIAEoAxIaChJudW1iZXJPZlBhc3Nlbmdl",
            "cnMYBCABKAUSSwoMYWlyQmFnU3RhdHVzGAUgASgLMjUuY29tLmZjYS51Y29u",
            "bmVjdC5nbG9iYWwuRUNhbGxEYXRhVXBsb2FkLkFpckJhZ1N0YXR1cxJICgxz",
            "ZWF0T2NjdXBpZWQYBiABKAsyMi5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5F",
            "Q2FsbERhdGFVcGxvYWQuU2VhdFN0YXRlEkcKC2JlbHRCdWNrbGVkGAcgASgL",
            "MjIuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuRUNhbGxEYXRhVXBsb2FkLlNl",
            "YXRTdGF0ZRI9Cg12ZWhpY2xlU3RhdHVzGAggASgLMiYuY29tLmZjYS51Y29u",
            "bmVjdC5nbG9iYWwuVmVoaWNsZVN0YXR1cxJNCgt0cmlnZ2VyTW9kZRgJIAEo",
            "DjI4LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkVDYWxsRGF0YVVwbG9hZC5U",
            "cmlnZ2VyTW9kZUVudW0SNgoNZGV2aWNlRGV0YWlscxgKIAEoCzIfLmNvbS5m",
            "Y2EudWNvbm5lY3QuZ2xvYmFsLkRldmljZRJRCg1jcmFzaERldGVjdGVkGAsg",
            "ASgOMjouY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuRUNhbGxEYXRhVXBsb2Fk",
            "LkNyYXNoRGV0ZWN0ZWRFbnVtGsQBCgxBaXJCYWdTdGF0dXMSEAoIaXNEcml2",
            "ZXIYASABKAgSFAoMaXNEcml2ZXJLbmVlGAIgASgIEhMKC2lzUGFzc2VuZ2Vy",
            "GAMgASgIEhcKD2lzUGFzc2VuZ2VyS25lZRgEIAEoCBIZChFpc0xlZnRTaWRl",
            "Q3VydGFpbhgFIAEoCBIaChJpc1JpZ2h0U2lkZUN1cnRhaW4YBiABKAgSEgoK",
            "aXNMZWZ0U2VhdBgHIAEoCBITCgtpc1JpZ2h0U2VhdBgIIAEoCBqeAQoJU2Vh",
            "dFN0YXRlEhMKC2lzRnJvbnRMZWZ0GAEgASgIEhQKDGlzRnJvbnRSaWdodBgC",
            "IAEoCBISCgppc1JlYXJMZWZ0GAMgASgIEhMKC2lzUmVhclJpZ2h0GAQgASgI",
            "EhQKDGlzUmVhck1pZGRsZRgFIAEoCBISCgppc1RhaWxMZWZ0GAYgASgIEhMK",
            "C2lzVGFpbFJpZ2h0GAcgASgIGrsCCg5DcmFzaERldGVjdGlvbhIZChFpc0Zy",
            "b250UHJlVGVuc2lvbhgBIAEoCBISCgppc0VhcnNSZWFyGAIgASgIEhYKDmlz",
            "SGlnaFNldkZyb250GAMgASgIEhMKC2lzU2lkZUV2ZW50GAQgASgIEhMKC2lz",
            "UmVhckV2ZW50GAUgASgIEhUKDWlzTG93U2V2RnJvbnQYBiABKAgSFAoMaXNO",
            "b25FYXJSb2xsGAcgASgIEhEKCWlzRWFyUm9sbBgIIAEoCBIXCg9pc0xlZnRT",
            "aWRlRXZlbnQYCSABKAgSFAoMaXNTaWRlRXZlbnQyGAogASgIEhgKEGlzUmln",
            "aHRTaWRlRXZlbnQYCyABKAgSGQoRaXNQZWRlc3RyaWFuQ3Jhc2gYDCABKAgS",
            "FAoMaXNVa25vd25UeXBlGA0gASgIIiwKD1RyaWdnZXJNb2RlRW51bRIKCgZN",
            "QU5VQUwQABINCglBVVRPTUFUSUMQASIkChFDcmFzaERldGVjdGVkRW51bRIG",
            "CgJOTxAAEgcKA1lFUxABItsBChFFQ2FsbFN0YXR1c1VwZGF0ZRJTCg9lY2Fs",
            "bFN0YXR1c0VudW0YASABKA4yOi5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5F",
            "Q2FsbFN0YXR1c1VwZGF0ZS5FQ2FsbFN0YXR1c0VudW0icQoPRUNhbGxTdGF0",
            "dXNFbnVtEggKBERJQUwQABINCglDQU5DRUxMRUQQARIOCgpURVJNSU5BVEVE",
            "EAISEAoMRFJPUFBFRF9DQUxMEAMSDwoLQ0FMTF9GQUlMRUQQBBISCg5BVFRF",
            "TVBUX0ZBSUxFRBAFIrIBChNFQ2FsbFZlaERhdGFSZXF1ZXN0Ek8KCmNhbGxT",
            "dGF0dXMYASABKA4yOy5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5FQ2FsbFZl",
            "aERhdGFSZXF1ZXN0LkNhbGxTdGF0dXNFbnVtIkoKDkNhbGxTdGF0dXNFbnVt",
            "Eg4KClRFUk1JTkFURUQQABIUChBURVJNSU5BVEVEX09USEVSEAESEgoOTk9U",
            "X1RFUk1JTkFURUQQAiKBAgoURUNhbGxWZWhEYXRhUmVzcG9uc2USQQoPZUNh",
            "bGxEYXRhVXBsb2FkGAEgASgLMiguY29tLmZjYS51Y29ubmVjdC5nbG9iYWwu",
            "RUNhbGxEYXRhVXBsb2FkEkwKCHJlc3BvbnNlGAIgASgOMjouY29tLmZjYS51",
            "Y29ubmVjdC5nbG9iYWwuRUNhbGxWZWhEYXRhUmVzcG9uc2UuUmVzcG9uc2VF",
            "bnVtEhMKC2lzVHJhbnNpZW50GAMgASgIEhkKEWZhaWx1cmVSZWFzb25Db2Rl",
            "GAQgASgFIigKDFJlc3BvbnNlRW51bRILCgdTVUNDRVNTEAASCwoHRkFJTFVS",
            "RRABInIKF1VwZGF0ZUVjYWxsUGhvbmVOdW1iZXJzEhEKCXBob25lTGlzdBgB",
            "IAEoDBJEChFwaG9uZUxpc3RNZXNzYWdlcxgCIAMoCzIpLmNvbS5mY2EudWNv",
            "bm5lY3QuZ2xvYmFsLlBob25lTGlzdE1lc3NhZ2Ui1AEKEFBob25lTGlzdE1l",
            "c3NhZ2USFgoORW5hYmxlQ2FsbFR5cGUYASABKAgSGgoSUHJpbWFyeVBob25l",
            "TnVtYmVyGAIgASgJEhwKFFNlY29uZGFyeVBob25lTnVtYmVyGAMgASgJEkgK",
            "DGNhbGxUeXBlRW51bRgEIAEoDjIyLmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFs",
            "LlBob25lTGlzdE1lc3NhZ2UuQ2FsbFR5cGUiJAoIQ2FsbFR5cGUSBwoDU09T",
            "EAASDwoLQVNPU19JTVBBQ1QQASJgChhSZXF1ZXN0RWNhbGxQaG9uZU51bWJl",
            "cnMSRAoRcGhvbmVMaXN0TWVzc2FnZXMYASADKAsyKS5jb20uZmNhLnVjb25u",
            "ZWN0Lmdsb2JhbC5QaG9uZUxpc3RNZXNzYWdlUABQAVACUANiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Com.Fca.Uconnect.Global.GlobalUconnectGNSSReflection.Descriptor, global::Com.Fca.Uconnect.Global.GlobalUconnectVehicleInfoReflection.Descriptor, global::Com.Fca.Uconnect.Global.GlobalUconnectDeviceReflection.Descriptor, global::Com.Fca.Uconnect.Global.GlobalUconnectExtSQDFReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ECallDataUpload), global::Com.Fca.Uconnect.Global.ECallDataUpload.Parser, new[]{ "VehicleInfo", "VehicleData", "TimeStamp", "NumberOfPassengers", "AirBagStatus", "SeatOccupied", "BeltBuckled", "VehicleStatus", "TriggerMode", "DeviceDetails", "CrashDetected" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.TriggerModeEnum), typeof(global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.CrashDetectedEnum) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.AirBagStatus), global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.AirBagStatus.Parser, new[]{ "IsDriver", "IsDriverKnee", "IsPassenger", "IsPassengerKnee", "IsLeftSideCurtain", "IsRightSideCurtain", "IsLeftSeat", "IsRightSeat" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState), global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState.Parser, new[]{ "IsFrontLeft", "IsFrontRight", "IsRearLeft", "IsRearRight", "IsRearMiddle", "IsTailLeft", "IsTailRight" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.CrashDetection), global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.CrashDetection.Parser, new[]{ "IsFrontPreTension", "IsEarsRear", "IsHighSevFront", "IsSideEvent", "IsRearEvent", "IsLowSevFront", "IsNonEarRoll", "IsEarRoll", "IsLeftSideEvent", "IsSideEvent2", "IsRightSideEvent", "IsPedestrianCrash", "IsUknownType" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ECallStatusUpdate), global::Com.Fca.Uconnect.Global.ECallStatusUpdate.Parser, new[]{ "EcallStatusEnum" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ECallStatusUpdate.Types.ECallStatusEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ECallVehDataRequest), global::Com.Fca.Uconnect.Global.ECallVehDataRequest.Parser, new[]{ "CallStatus" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ECallVehDataRequest.Types.CallStatusEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ECallVehDataResponse), global::Com.Fca.Uconnect.Global.ECallVehDataResponse.Parser, new[]{ "ECallDataUpload", "Response", "IsTransient", "FailureReasonCode" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ECallVehDataResponse.Types.ResponseEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.UpdateEcallPhoneNumbers), global::Com.Fca.Uconnect.Global.UpdateEcallPhoneNumbers.Parser, new[]{ "PhoneList", "PhoneListMessages" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.PhoneListMessage), global::Com.Fca.Uconnect.Global.PhoneListMessage.Parser, new[]{ "EnableCallType", "PrimaryPhoneNumber", "SecondaryPhoneNumber", "CallTypeEnum" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.PhoneListMessage.Types.CallType) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.RequestEcallPhoneNumbers), global::Com.Fca.Uconnect.Global.RequestEcallPhoneNumbers.Parser, new[]{ "PhoneListMessages" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This message represents  ECall DataUpload for emergencies and accidents.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>ECallDataUpload Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1489600238258
  /// 		messageId: 1
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.ecallDataUpload]
  /// 		 {
  /// 		  vehicleId: "1234AXFGFGHGH4566"
  /// 		  isPositionTrusted: true
  /// 		  timeStamp: 1489600238256
  /// 		  vehicleLocation
  /// 		  {
  /// 			longitude: 43.9999
  /// 			latitude: -84.54636
  /// 		  }
  /// 		 numberOfPassengers: 1
  /// 		 airBagStatus
  /// 		 {
  /// 		  driver: false
  /// 		  driverKnee: false
  /// 		  passenger: false
  /// 		  passengerKnee: false
  /// 		  leftSideCurtain: false
  /// 		  leftSeat: false
  /// 		  rightSeat: false
  /// 		}
  /// 		  vehicleSpeed: 75.0
  /// 		  engineStatus: STOP
  /// 	    }
  /// 	  }
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class ECallDataUpload : pb::IMessage<ECallDataUpload> {
    private static readonly pb::MessageParser<ECallDataUpload> _parser = new pb::MessageParser<ECallDataUpload>(() => new ECallDataUpload());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ECallDataUpload> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ECallDataUpload(ECallDataUpload other) : this() {
      VehicleInfo = other.vehicleInfo_ != null ? other.VehicleInfo.Clone() : null;
      VehicleData = other.vehicleData_ != null ? other.VehicleData.Clone() : null;
      timeStamp_ = other.timeStamp_;
      numberOfPassengers_ = other.numberOfPassengers_;
      AirBagStatus = other.airBagStatus_ != null ? other.AirBagStatus.Clone() : null;
      SeatOccupied = other.seatOccupied_ != null ? other.SeatOccupied.Clone() : null;
      BeltBuckled = other.beltBuckled_ != null ? other.BeltBuckled.Clone() : null;
      VehicleStatus = other.vehicleStatus_ != null ? other.VehicleStatus.Clone() : null;
      triggerMode_ = other.triggerMode_;
      DeviceDetails = other.deviceDetails_ != null ? other.DeviceDetails.Clone() : null;
      crashDetected_ = other.crashDetected_;
    }

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

    /// <summary>Field number for the "vehicleInfo" field.</summary>
    public const int VehicleInfoFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.VehicleInfo vehicleInfo_;
    /// <summary>
    //// This message is to get the Vehicle Information.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleInfo VehicleInfo {
      get { return vehicleInfo_; }
      set {
        vehicleInfo_ = value;
      }
    }

    /// <summary>Field number for the "vehicleData" field.</summary>
    public const int VehicleDataFieldNumber = 12;
    private global::Com.Fca.Uconnect.Global.VehicleData vehicleData_;
    /// <summary>
    //// Get Vehicle Health Data
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleData VehicleData {
      get { return vehicleData_; }
      set {
        vehicleData_ = value;
      }
    }

    /// <summary>Field number for the "timeStamp" field.</summary>
    public const int TimeStampFieldNumber = 2;
    private long timeStamp_;
    /// <summary>
    ////The milliseconds since Jan 1, 1970 00:00:00 UTC when the message is created. Should come from the system clock of the sender.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long TimeStamp {
      get { return timeStamp_; }
      set {
        timeStamp_ = value;
      }
    }

    /// <summary>Field number for the "numberOfPassengers" field.</summary>
    public const int NumberOfPassengersFieldNumber = 4;
    private int numberOfPassengers_;
    /// <summary>
    //// This represents number of passengers present in the Veh.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NumberOfPassengers {
      get { return numberOfPassengers_; }
      set {
        numberOfPassengers_ = value;
      }
    }

    /// <summary>Field number for the "airBagStatus" field.</summary>
    public const int AirBagStatusFieldNumber = 5;
    private global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.AirBagStatus airBagStatus_;
    /// <summary>
    ////This represents whether airbags are deployed or not.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.AirBagStatus AirBagStatus {
      get { return airBagStatus_; }
      set {
        airBagStatus_ = value;
      }
    }

    /// <summary>Field number for the "seatOccupied" field.</summary>
    public const int SeatOccupiedFieldNumber = 6;
    private global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState seatOccupied_;
    /// <summary>
    ////This represents which seats are occupied in the vehicle.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState SeatOccupied {
      get { return seatOccupied_; }
      set {
        seatOccupied_ = value;
      }
    }

    /// <summary>Field number for the "beltBuckled" field.</summary>
    public const int BeltBuckledFieldNumber = 7;
    private global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState beltBuckled_;
    /// <summary>
    ////This represents which seat belts are buckled.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState BeltBuckled {
      get { return beltBuckled_; }
      set {
        beltBuckled_ = value;
      }
    }

    /// <summary>Field number for the "vehicleStatus" field.</summary>
    public const int VehicleStatusFieldNumber = 8;
    private global::Com.Fca.Uconnect.Global.VehicleStatus vehicleStatus_;
    /// <summary>
    ////Status of each door/window/hood/trunk.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleStatus VehicleStatus {
      get { return vehicleStatus_; }
      set {
        vehicleStatus_ = value;
      }
    }

    /// <summary>Field number for the "triggerMode" field.</summary>
    public const int TriggerModeFieldNumber = 9;
    private global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.TriggerModeEnum triggerMode_ = 0;
    /// <summary>
    ////Trigger mode of the data upload.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.TriggerModeEnum TriggerMode {
      get { return triggerMode_; }
      set {
        triggerMode_ = value;
      }
    }

    /// <summary>Field number for the "deviceDetails" field.</summary>
    public const int DeviceDetailsFieldNumber = 10;
    private global::Com.Fca.Uconnect.Global.Device deviceDetails_;
    /// <summary>
    //// Device Identification Details.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Device DeviceDetails {
      get { return deviceDetails_; }
      set {
        deviceDetails_ = value;
      }
    }

    /// <summary>Field number for the "crashDetected" field.</summary>
    public const int CrashDetectedFieldNumber = 11;
    private global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.CrashDetectedEnum crashDetected_ = 0;
    /// <summary>
    //// Crash Detected CanImpactEven toggle bit
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.CrashDetectedEnum CrashDetected {
      get { return crashDetected_; }
      set {
        crashDetected_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ECallDataUpload other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(VehicleInfo, other.VehicleInfo)) return false;
      if (!object.Equals(VehicleData, other.VehicleData)) return false;
      if (TimeStamp != other.TimeStamp) return false;
      if (NumberOfPassengers != other.NumberOfPassengers) return false;
      if (!object.Equals(AirBagStatus, other.AirBagStatus)) return false;
      if (!object.Equals(SeatOccupied, other.SeatOccupied)) return false;
      if (!object.Equals(BeltBuckled, other.BeltBuckled)) return false;
      if (!object.Equals(VehicleStatus, other.VehicleStatus)) return false;
      if (TriggerMode != other.TriggerMode) return false;
      if (!object.Equals(DeviceDetails, other.DeviceDetails)) return false;
      if (CrashDetected != other.CrashDetected) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (vehicleInfo_ != null) hash ^= VehicleInfo.GetHashCode();
      if (vehicleData_ != null) hash ^= VehicleData.GetHashCode();
      if (TimeStamp != 0L) hash ^= TimeStamp.GetHashCode();
      if (NumberOfPassengers != 0) hash ^= NumberOfPassengers.GetHashCode();
      if (airBagStatus_ != null) hash ^= AirBagStatus.GetHashCode();
      if (seatOccupied_ != null) hash ^= SeatOccupied.GetHashCode();
      if (beltBuckled_ != null) hash ^= BeltBuckled.GetHashCode();
      if (vehicleStatus_ != null) hash ^= VehicleStatus.GetHashCode();
      if (TriggerMode != 0) hash ^= TriggerMode.GetHashCode();
      if (deviceDetails_ != null) hash ^= DeviceDetails.GetHashCode();
      if (CrashDetected != 0) hash ^= CrashDetected.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 (vehicleInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(VehicleInfo);
      }
      if (TimeStamp != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(TimeStamp);
      }
      if (NumberOfPassengers != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(NumberOfPassengers);
      }
      if (airBagStatus_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(AirBagStatus);
      }
      if (seatOccupied_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(SeatOccupied);
      }
      if (beltBuckled_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(BeltBuckled);
      }
      if (vehicleStatus_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(VehicleStatus);
      }
      if (TriggerMode != 0) {
        output.WriteRawTag(72);
        output.WriteEnum((int) TriggerMode);
      }
      if (deviceDetails_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(DeviceDetails);
      }
      if (CrashDetected != 0) {
        output.WriteRawTag(88);
        output.WriteEnum((int) CrashDetected);
      }
      if (vehicleData_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(VehicleData);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (vehicleInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VehicleInfo);
      }
      if (vehicleData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VehicleData);
      }
      if (TimeStamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(TimeStamp);
      }
      if (NumberOfPassengers != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumberOfPassengers);
      }
      if (airBagStatus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AirBagStatus);
      }
      if (seatOccupied_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SeatOccupied);
      }
      if (beltBuckled_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BeltBuckled);
      }
      if (vehicleStatus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VehicleStatus);
      }
      if (TriggerMode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TriggerMode);
      }
      if (deviceDetails_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DeviceDetails);
      }
      if (CrashDetected != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) CrashDetected);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ECallDataUpload other) {
      if (other == null) {
        return;
      }
      if (other.vehicleInfo_ != null) {
        if (vehicleInfo_ == null) {
          vehicleInfo_ = new global::Com.Fca.Uconnect.Global.VehicleInfo();
        }
        VehicleInfo.MergeFrom(other.VehicleInfo);
      }
      if (other.vehicleData_ != null) {
        if (vehicleData_ == null) {
          vehicleData_ = new global::Com.Fca.Uconnect.Global.VehicleData();
        }
        VehicleData.MergeFrom(other.VehicleData);
      }
      if (other.TimeStamp != 0L) {
        TimeStamp = other.TimeStamp;
      }
      if (other.NumberOfPassengers != 0) {
        NumberOfPassengers = other.NumberOfPassengers;
      }
      if (other.airBagStatus_ != null) {
        if (airBagStatus_ == null) {
          airBagStatus_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.AirBagStatus();
        }
        AirBagStatus.MergeFrom(other.AirBagStatus);
      }
      if (other.seatOccupied_ != null) {
        if (seatOccupied_ == null) {
          seatOccupied_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState();
        }
        SeatOccupied.MergeFrom(other.SeatOccupied);
      }
      if (other.beltBuckled_ != null) {
        if (beltBuckled_ == null) {
          beltBuckled_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState();
        }
        BeltBuckled.MergeFrom(other.BeltBuckled);
      }
      if (other.vehicleStatus_ != null) {
        if (vehicleStatus_ == null) {
          vehicleStatus_ = new global::Com.Fca.Uconnect.Global.VehicleStatus();
        }
        VehicleStatus.MergeFrom(other.VehicleStatus);
      }
      if (other.TriggerMode != 0) {
        TriggerMode = other.TriggerMode;
      }
      if (other.deviceDetails_ != null) {
        if (deviceDetails_ == null) {
          deviceDetails_ = new global::Com.Fca.Uconnect.Global.Device();
        }
        DeviceDetails.MergeFrom(other.DeviceDetails);
      }
      if (other.CrashDetected != 0) {
        CrashDetected = other.CrashDetected;
      }
    }

    [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 (vehicleInfo_ == null) {
              vehicleInfo_ = new global::Com.Fca.Uconnect.Global.VehicleInfo();
            }
            input.ReadMessage(vehicleInfo_);
            break;
          }
          case 16: {
            TimeStamp = input.ReadInt64();
            break;
          }
          case 32: {
            NumberOfPassengers = input.ReadInt32();
            break;
          }
          case 42: {
            if (airBagStatus_ == null) {
              airBagStatus_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.AirBagStatus();
            }
            input.ReadMessage(airBagStatus_);
            break;
          }
          case 50: {
            if (seatOccupied_ == null) {
              seatOccupied_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState();
            }
            input.ReadMessage(seatOccupied_);
            break;
          }
          case 58: {
            if (beltBuckled_ == null) {
              beltBuckled_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.SeatState();
            }
            input.ReadMessage(beltBuckled_);
            break;
          }
          case 66: {
            if (vehicleStatus_ == null) {
              vehicleStatus_ = new global::Com.Fca.Uconnect.Global.VehicleStatus();
            }
            input.ReadMessage(vehicleStatus_);
            break;
          }
          case 72: {
            triggerMode_ = (global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.TriggerModeEnum) input.ReadEnum();
            break;
          }
          case 82: {
            if (deviceDetails_ == null) {
              deviceDetails_ = new global::Com.Fca.Uconnect.Global.Device();
            }
            input.ReadMessage(deviceDetails_);
            break;
          }
          case 88: {
            crashDetected_ = (global::Com.Fca.Uconnect.Global.ECallDataUpload.Types.CrashDetectedEnum) input.ReadEnum();
            break;
          }
          case 98: {
            if (vehicleData_ == null) {
              vehicleData_ = new global::Com.Fca.Uconnect.Global.VehicleData();
            }
            input.ReadMessage(vehicleData_);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ECallDataUpload message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum TriggerModeEnum {
        [pbr::OriginalName("MANUAL")] Manual = 0,
        [pbr::OriginalName("AUTOMATIC")] Automatic = 1,
      }

      public enum CrashDetectedEnum {
        [pbr::OriginalName("NO")] No = 0,
        [pbr::OriginalName("YES")] Yes = 1,
      }

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

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

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public AirBagStatus(AirBagStatus other) : this() {
          isDriver_ = other.isDriver_;
          isDriverKnee_ = other.isDriverKnee_;
          isPassenger_ = other.isPassenger_;
          isPassengerKnee_ = other.isPassengerKnee_;
          isLeftSideCurtain_ = other.isLeftSideCurtain_;
          isRightSideCurtain_ = other.isRightSideCurtain_;
          isLeftSeat_ = other.isLeftSeat_;
          isRightSeat_ = other.isRightSeat_;
        }

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

        /// <summary>Field number for the "isDriver" field.</summary>
        public const int IsDriverFieldNumber = 1;
        private bool isDriver_;
        /// <summary>
        //// Identifies as the main Driver Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsDriver {
          get { return isDriver_; }
          set {
            isDriver_ = value;
          }
        }

        /// <summary>Field number for the "isDriverKnee" field.</summary>
        public const int IsDriverKneeFieldNumber = 2;
        private bool isDriverKnee_;
        /// <summary>
        //// Identifies as the Driver Knee Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsDriverKnee {
          get { return isDriverKnee_; }
          set {
            isDriverKnee_ = value;
          }
        }

        /// <summary>Field number for the "isPassenger" field.</summary>
        public const int IsPassengerFieldNumber = 3;
        private bool isPassenger_;
        /// <summary>
        //// Identifies as the main Passenger Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsPassenger {
          get { return isPassenger_; }
          set {
            isPassenger_ = value;
          }
        }

        /// <summary>Field number for the "isPassengerKnee" field.</summary>
        public const int IsPassengerKneeFieldNumber = 4;
        private bool isPassengerKnee_;
        /// <summary>
        //// Identifies as the Passenger Knee Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsPassengerKnee {
          get { return isPassengerKnee_; }
          set {
            isPassengerKnee_ = value;
          }
        }

        /// <summary>Field number for the "isLeftSideCurtain" field.</summary>
        public const int IsLeftSideCurtainFieldNumber = 5;
        private bool isLeftSideCurtain_;
        /// <summary>
        //// Identifies as the Left Side Curtain Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsLeftSideCurtain {
          get { return isLeftSideCurtain_; }
          set {
            isLeftSideCurtain_ = value;
          }
        }

        /// <summary>Field number for the "isRightSideCurtain" field.</summary>
        public const int IsRightSideCurtainFieldNumber = 6;
        private bool isRightSideCurtain_;
        /// <summary>
        //// Identifies as the Right Side Curtain Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsRightSideCurtain {
          get { return isRightSideCurtain_; }
          set {
            isRightSideCurtain_ = value;
          }
        }

        /// <summary>Field number for the "isLeftSeat" field.</summary>
        public const int IsLeftSeatFieldNumber = 7;
        private bool isLeftSeat_;
        /// <summary>
        //// Identifies as the Left Seat Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsLeftSeat {
          get { return isLeftSeat_; }
          set {
            isLeftSeat_ = value;
          }
        }

        /// <summary>Field number for the "isRightSeat" field.</summary>
        public const int IsRightSeatFieldNumber = 8;
        private bool isRightSeat_;
        /// <summary>
        //// Identifies as the Right Seat Airbag
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsRightSeat {
          get { return isRightSeat_; }
          set {
            isRightSeat_ = value;
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(AirBagStatus other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (IsDriver != other.IsDriver) return false;
          if (IsDriverKnee != other.IsDriverKnee) return false;
          if (IsPassenger != other.IsPassenger) return false;
          if (IsPassengerKnee != other.IsPassengerKnee) return false;
          if (IsLeftSideCurtain != other.IsLeftSideCurtain) return false;
          if (IsRightSideCurtain != other.IsRightSideCurtain) return false;
          if (IsLeftSeat != other.IsLeftSeat) return false;
          if (IsRightSeat != other.IsRightSeat) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (IsDriver != false) hash ^= IsDriver.GetHashCode();
          if (IsDriverKnee != false) hash ^= IsDriverKnee.GetHashCode();
          if (IsPassenger != false) hash ^= IsPassenger.GetHashCode();
          if (IsPassengerKnee != false) hash ^= IsPassengerKnee.GetHashCode();
          if (IsLeftSideCurtain != false) hash ^= IsLeftSideCurtain.GetHashCode();
          if (IsRightSideCurtain != false) hash ^= IsRightSideCurtain.GetHashCode();
          if (IsLeftSeat != false) hash ^= IsLeftSeat.GetHashCode();
          if (IsRightSeat != false) hash ^= IsRightSeat.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 (IsDriver != false) {
            output.WriteRawTag(8);
            output.WriteBool(IsDriver);
          }
          if (IsDriverKnee != false) {
            output.WriteRawTag(16);
            output.WriteBool(IsDriverKnee);
          }
          if (IsPassenger != false) {
            output.WriteRawTag(24);
            output.WriteBool(IsPassenger);
          }
          if (IsPassengerKnee != false) {
            output.WriteRawTag(32);
            output.WriteBool(IsPassengerKnee);
          }
          if (IsLeftSideCurtain != false) {
            output.WriteRawTag(40);
            output.WriteBool(IsLeftSideCurtain);
          }
          if (IsRightSideCurtain != false) {
            output.WriteRawTag(48);
            output.WriteBool(IsRightSideCurtain);
          }
          if (IsLeftSeat != false) {
            output.WriteRawTag(56);
            output.WriteBool(IsLeftSeat);
          }
          if (IsRightSeat != false) {
            output.WriteRawTag(64);
            output.WriteBool(IsRightSeat);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (IsDriver != false) {
            size += 1 + 1;
          }
          if (IsDriverKnee != false) {
            size += 1 + 1;
          }
          if (IsPassenger != false) {
            size += 1 + 1;
          }
          if (IsPassengerKnee != false) {
            size += 1 + 1;
          }
          if (IsLeftSideCurtain != false) {
            size += 1 + 1;
          }
          if (IsRightSideCurtain != false) {
            size += 1 + 1;
          }
          if (IsLeftSeat != false) {
            size += 1 + 1;
          }
          if (IsRightSeat != false) {
            size += 1 + 1;
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(AirBagStatus other) {
          if (other == null) {
            return;
          }
          if (other.IsDriver != false) {
            IsDriver = other.IsDriver;
          }
          if (other.IsDriverKnee != false) {
            IsDriverKnee = other.IsDriverKnee;
          }
          if (other.IsPassenger != false) {
            IsPassenger = other.IsPassenger;
          }
          if (other.IsPassengerKnee != false) {
            IsPassengerKnee = other.IsPassengerKnee;
          }
          if (other.IsLeftSideCurtain != false) {
            IsLeftSideCurtain = other.IsLeftSideCurtain;
          }
          if (other.IsRightSideCurtain != false) {
            IsRightSideCurtain = other.IsRightSideCurtain;
          }
          if (other.IsLeftSeat != false) {
            IsLeftSeat = other.IsLeftSeat;
          }
          if (other.IsRightSeat != false) {
            IsRightSeat = other.IsRightSeat;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 8: {
                IsDriver = input.ReadBool();
                break;
              }
              case 16: {
                IsDriverKnee = input.ReadBool();
                break;
              }
              case 24: {
                IsPassenger = input.ReadBool();
                break;
              }
              case 32: {
                IsPassengerKnee = input.ReadBool();
                break;
              }
              case 40: {
                IsLeftSideCurtain = input.ReadBool();
                break;
              }
              case 48: {
                IsRightSideCurtain = input.ReadBool();
                break;
              }
              case 56: {
                IsLeftSeat = input.ReadBool();
                break;
              }
              case 64: {
                IsRightSeat = input.ReadBool();
                break;
              }
            }
          }
        }

      }

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

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

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public SeatState(SeatState other) : this() {
          isFrontLeft_ = other.isFrontLeft_;
          isFrontRight_ = other.isFrontRight_;
          isRearLeft_ = other.isRearLeft_;
          isRearRight_ = other.isRearRight_;
          isRearMiddle_ = other.isRearMiddle_;
          isTailLeft_ = other.isTailLeft_;
          isTailRight_ = other.isTailRight_;
        }

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

        /// <summary>Field number for the "isFrontLeft" field.</summary>
        public const int IsFrontLeftFieldNumber = 1;
        private bool isFrontLeft_;
        /// <summary>
        ////identifies whether Front Left Seat Occupied.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsFrontLeft {
          get { return isFrontLeft_; }
          set {
            isFrontLeft_ = value;
          }
        }

        /// <summary>Field number for the "isFrontRight" field.</summary>
        public const int IsFrontRightFieldNumber = 2;
        private bool isFrontRight_;
        /// <summary>
        ////identifies whether Front Right Seat Occupied.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsFrontRight {
          get { return isFrontRight_; }
          set {
            isFrontRight_ = value;
          }
        }

        /// <summary>Field number for the "isRearLeft" field.</summary>
        public const int IsRearLeftFieldNumber = 3;
        private bool isRearLeft_;
        /// <summary>
        ////identifies whether Rear Left Seat Occupied.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsRearLeft {
          get { return isRearLeft_; }
          set {
            isRearLeft_ = value;
          }
        }

        /// <summary>Field number for the "isRearRight" field.</summary>
        public const int IsRearRightFieldNumber = 4;
        private bool isRearRight_;
        /// <summary>
        ////identifies whether Rear Right Seat Occupied.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsRearRight {
          get { return isRearRight_; }
          set {
            isRearRight_ = value;
          }
        }

        /// <summary>Field number for the "isRearMiddle" field.</summary>
        public const int IsRearMiddleFieldNumber = 5;
        private bool isRearMiddle_;
        /// <summary>
        ////identifies whether Rear Middle Seat Occupied.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsRearMiddle {
          get { return isRearMiddle_; }
          set {
            isRearMiddle_ = value;
          }
        }

        /// <summary>Field number for the "isTailLeft" field.</summary>
        public const int IsTailLeftFieldNumber = 6;
        private bool isTailLeft_;
        /// <summary>
        ////identifies whether Tail Left Seat Occupied.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsTailLeft {
          get { return isTailLeft_; }
          set {
            isTailLeft_ = value;
          }
        }

        /// <summary>Field number for the "isTailRight" field.</summary>
        public const int IsTailRightFieldNumber = 7;
        private bool isTailRight_;
        /// <summary>
        ////identifies whether Tail RightSeat Occupied.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsTailRight {
          get { return isTailRight_; }
          set {
            isTailRight_ = value;
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(SeatState other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (IsFrontLeft != other.IsFrontLeft) return false;
          if (IsFrontRight != other.IsFrontRight) return false;
          if (IsRearLeft != other.IsRearLeft) return false;
          if (IsRearRight != other.IsRearRight) return false;
          if (IsRearMiddle != other.IsRearMiddle) return false;
          if (IsTailLeft != other.IsTailLeft) return false;
          if (IsTailRight != other.IsTailRight) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (IsFrontLeft != false) hash ^= IsFrontLeft.GetHashCode();
          if (IsFrontRight != false) hash ^= IsFrontRight.GetHashCode();
          if (IsRearLeft != false) hash ^= IsRearLeft.GetHashCode();
          if (IsRearRight != false) hash ^= IsRearRight.GetHashCode();
          if (IsRearMiddle != false) hash ^= IsRearMiddle.GetHashCode();
          if (IsTailLeft != false) hash ^= IsTailLeft.GetHashCode();
          if (IsTailRight != false) hash ^= IsTailRight.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 (IsFrontLeft != false) {
            output.WriteRawTag(8);
            output.WriteBool(IsFrontLeft);
          }
          if (IsFrontRight != false) {
            output.WriteRawTag(16);
            output.WriteBool(IsFrontRight);
          }
          if (IsRearLeft != false) {
            output.WriteRawTag(24);
            output.WriteBool(IsRearLeft);
          }
          if (IsRearRight != false) {
            output.WriteRawTag(32);
            output.WriteBool(IsRearRight);
          }
          if (IsRearMiddle != false) {
            output.WriteRawTag(40);
            output.WriteBool(IsRearMiddle);
          }
          if (IsTailLeft != false) {
            output.WriteRawTag(48);
            output.WriteBool(IsTailLeft);
          }
          if (IsTailRight != false) {
            output.WriteRawTag(56);
            output.WriteBool(IsTailRight);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (IsFrontLeft != false) {
            size += 1 + 1;
          }
          if (IsFrontRight != false) {
            size += 1 + 1;
          }
          if (IsRearLeft != false) {
            size += 1 + 1;
          }
          if (IsRearRight != false) {
            size += 1 + 1;
          }
          if (IsRearMiddle != false) {
            size += 1 + 1;
          }
          if (IsTailLeft != false) {
            size += 1 + 1;
          }
          if (IsTailRight != false) {
            size += 1 + 1;
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(SeatState other) {
          if (other == null) {
            return;
          }
          if (other.IsFrontLeft != false) {
            IsFrontLeft = other.IsFrontLeft;
          }
          if (other.IsFrontRight != false) {
            IsFrontRight = other.IsFrontRight;
          }
          if (other.IsRearLeft != false) {
            IsRearLeft = other.IsRearLeft;
          }
          if (other.IsRearRight != false) {
            IsRearRight = other.IsRearRight;
          }
          if (other.IsRearMiddle != false) {
            IsRearMiddle = other.IsRearMiddle;
          }
          if (other.IsTailLeft != false) {
            IsTailLeft = other.IsTailLeft;
          }
          if (other.IsTailRight != false) {
            IsTailRight = other.IsTailRight;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 8: {
                IsFrontLeft = input.ReadBool();
                break;
              }
              case 16: {
                IsFrontRight = input.ReadBool();
                break;
              }
              case 24: {
                IsRearLeft = input.ReadBool();
                break;
              }
              case 32: {
                IsRearRight = input.ReadBool();
                break;
              }
              case 40: {
                IsRearMiddle = input.ReadBool();
                break;
              }
              case 48: {
                IsTailLeft = input.ReadBool();
                break;
              }
              case 56: {
                IsTailRight = input.ReadBool();
                break;
              }
            }
          }
        }

      }

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

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

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public CrashDetection(CrashDetection other) : this() {
          isFrontPreTension_ = other.isFrontPreTension_;
          isEarsRear_ = other.isEarsRear_;
          isHighSevFront_ = other.isHighSevFront_;
          isSideEvent_ = other.isSideEvent_;
          isRearEvent_ = other.isRearEvent_;
          isLowSevFront_ = other.isLowSevFront_;
          isNonEarRoll_ = other.isNonEarRoll_;
          isEarRoll_ = other.isEarRoll_;
          isLeftSideEvent_ = other.isLeftSideEvent_;
          isSideEvent2_ = other.isSideEvent2_;
          isRightSideEvent_ = other.isRightSideEvent_;
          isPedestrianCrash_ = other.isPedestrianCrash_;
          isUknownType_ = other.isUknownType_;
        }

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

        /// <summary>Field number for the "isFrontPreTension" field.</summary>
        public const int IsFrontPreTensionFieldNumber = 1;
        private bool isFrontPreTension_;
        /// <summary>
        //// Front Pretention Event .
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsFrontPreTension {
          get { return isFrontPreTension_; }
          set {
            isFrontPreTension_ = value;
          }
        }

        /// <summary>Field number for the "isEarsRear" field.</summary>
        public const int IsEarsRearFieldNumber = 2;
        private bool isEarsRear_;
        /// <summary>
        //// Rear EARs event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsEarsRear {
          get { return isEarsRear_; }
          set {
            isEarsRear_ = value;
          }
        }

        /// <summary>Field number for the "isHighSevFront" field.</summary>
        public const int IsHighSevFrontFieldNumber = 3;
        private bool isHighSevFront_;
        /// <summary>
        //// High Severity Front Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsHighSevFront {
          get { return isHighSevFront_; }
          set {
            isHighSevFront_ = value;
          }
        }

        /// <summary>Field number for the "isSideEvent" field.</summary>
        public const int IsSideEventFieldNumber = 4;
        private bool isSideEvent_;
        /// <summary>
        //// Side Impact Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsSideEvent {
          get { return isSideEvent_; }
          set {
            isSideEvent_ = value;
          }
        }

        /// <summary>Field number for the "isRearEvent" field.</summary>
        public const int IsRearEventFieldNumber = 5;
        private bool isRearEvent_;
        /// <summary>
        //// Rear Impact Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsRearEvent {
          get { return isRearEvent_; }
          set {
            isRearEvent_ = value;
          }
        }

        /// <summary>Field number for the "isLowSevFront" field.</summary>
        public const int IsLowSevFrontFieldNumber = 6;
        private bool isLowSevFront_;
        /// <summary>
        //// Low Severity Front Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsLowSevFront {
          get { return isLowSevFront_; }
          set {
            isLowSevFront_ = value;
          }
        }

        /// <summary>Field number for the "isNonEarRoll" field.</summary>
        public const int IsNonEarRollFieldNumber = 7;
        private bool isNonEarRoll_;
        /// <summary>
        //// Non-Ears Roll-over Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsNonEarRoll {
          get { return isNonEarRoll_; }
          set {
            isNonEarRoll_ = value;
          }
        }

        /// <summary>Field number for the "isEarRoll" field.</summary>
        public const int IsEarRollFieldNumber = 8;
        private bool isEarRoll_;
        /// <summary>
        //// EARs roll-over event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsEarRoll {
          get { return isEarRoll_; }
          set {
            isEarRoll_ = value;
          }
        }

        /// <summary>Field number for the "isLeftSideEvent" field.</summary>
        public const int IsLeftSideEventFieldNumber = 9;
        private bool isLeftSideEvent_;
        /// <summary>
        //// Left Side Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsLeftSideEvent {
          get { return isLeftSideEvent_; }
          set {
            isLeftSideEvent_ = value;
          }
        }

        /// <summary>Field number for the "isSideEvent2" field.</summary>
        public const int IsSideEvent2FieldNumber = 10;
        private bool isSideEvent2_;
        /// <summary>
        //// Side Event[5]
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsSideEvent2 {
          get { return isSideEvent2_; }
          set {
            isSideEvent2_ = value;
          }
        }

        /// <summary>Field number for the "isRightSideEvent" field.</summary>
        public const int IsRightSideEventFieldNumber = 11;
        private bool isRightSideEvent_;
        /// <summary>
        //// Right Side Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsRightSideEvent {
          get { return isRightSideEvent_; }
          set {
            isRightSideEvent_ = value;
          }
        }

        /// <summary>Field number for the "isPedestrianCrash" field.</summary>
        public const int IsPedestrianCrashFieldNumber = 12;
        private bool isPedestrianCrash_;
        /// <summary>
        //// Pedestrian Crash Event.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsPedestrianCrash {
          get { return isPedestrianCrash_; }
          set {
            isPedestrianCrash_ = value;
          }
        }

        /// <summary>Field number for the "isUknownType" field.</summary>
        public const int IsUknownTypeFieldNumber = 13;
        private bool isUknownType_;
        /// <summary>
        //// General Event Indicator.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsUknownType {
          get { return isUknownType_; }
          set {
            isUknownType_ = value;
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(CrashDetection other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (IsFrontPreTension != other.IsFrontPreTension) return false;
          if (IsEarsRear != other.IsEarsRear) return false;
          if (IsHighSevFront != other.IsHighSevFront) return false;
          if (IsSideEvent != other.IsSideEvent) return false;
          if (IsRearEvent != other.IsRearEvent) return false;
          if (IsLowSevFront != other.IsLowSevFront) return false;
          if (IsNonEarRoll != other.IsNonEarRoll) return false;
          if (IsEarRoll != other.IsEarRoll) return false;
          if (IsLeftSideEvent != other.IsLeftSideEvent) return false;
          if (IsSideEvent2 != other.IsSideEvent2) return false;
          if (IsRightSideEvent != other.IsRightSideEvent) return false;
          if (IsPedestrianCrash != other.IsPedestrianCrash) return false;
          if (IsUknownType != other.IsUknownType) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (IsFrontPreTension != false) hash ^= IsFrontPreTension.GetHashCode();
          if (IsEarsRear != false) hash ^= IsEarsRear.GetHashCode();
          if (IsHighSevFront != false) hash ^= IsHighSevFront.GetHashCode();
          if (IsSideEvent != false) hash ^= IsSideEvent.GetHashCode();
          if (IsRearEvent != false) hash ^= IsRearEvent.GetHashCode();
          if (IsLowSevFront != false) hash ^= IsLowSevFront.GetHashCode();
          if (IsNonEarRoll != false) hash ^= IsNonEarRoll.GetHashCode();
          if (IsEarRoll != false) hash ^= IsEarRoll.GetHashCode();
          if (IsLeftSideEvent != false) hash ^= IsLeftSideEvent.GetHashCode();
          if (IsSideEvent2 != false) hash ^= IsSideEvent2.GetHashCode();
          if (IsRightSideEvent != false) hash ^= IsRightSideEvent.GetHashCode();
          if (IsPedestrianCrash != false) hash ^= IsPedestrianCrash.GetHashCode();
          if (IsUknownType != false) hash ^= IsUknownType.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 (IsFrontPreTension != false) {
            output.WriteRawTag(8);
            output.WriteBool(IsFrontPreTension);
          }
          if (IsEarsRear != false) {
            output.WriteRawTag(16);
            output.WriteBool(IsEarsRear);
          }
          if (IsHighSevFront != false) {
            output.WriteRawTag(24);
            output.WriteBool(IsHighSevFront);
          }
          if (IsSideEvent != false) {
            output.WriteRawTag(32);
            output.WriteBool(IsSideEvent);
          }
          if (IsRearEvent != false) {
            output.WriteRawTag(40);
            output.WriteBool(IsRearEvent);
          }
          if (IsLowSevFront != false) {
            output.WriteRawTag(48);
            output.WriteBool(IsLowSevFront);
          }
          if (IsNonEarRoll != false) {
            output.WriteRawTag(56);
            output.WriteBool(IsNonEarRoll);
          }
          if (IsEarRoll != false) {
            output.WriteRawTag(64);
            output.WriteBool(IsEarRoll);
          }
          if (IsLeftSideEvent != false) {
            output.WriteRawTag(72);
            output.WriteBool(IsLeftSideEvent);
          }
          if (IsSideEvent2 != false) {
            output.WriteRawTag(80);
            output.WriteBool(IsSideEvent2);
          }
          if (IsRightSideEvent != false) {
            output.WriteRawTag(88);
            output.WriteBool(IsRightSideEvent);
          }
          if (IsPedestrianCrash != false) {
            output.WriteRawTag(96);
            output.WriteBool(IsPedestrianCrash);
          }
          if (IsUknownType != false) {
            output.WriteRawTag(104);
            output.WriteBool(IsUknownType);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (IsFrontPreTension != false) {
            size += 1 + 1;
          }
          if (IsEarsRear != false) {
            size += 1 + 1;
          }
          if (IsHighSevFront != false) {
            size += 1 + 1;
          }
          if (IsSideEvent != false) {
            size += 1 + 1;
          }
          if (IsRearEvent != false) {
            size += 1 + 1;
          }
          if (IsLowSevFront != false) {
            size += 1 + 1;
          }
          if (IsNonEarRoll != false) {
            size += 1 + 1;
          }
          if (IsEarRoll != false) {
            size += 1 + 1;
          }
          if (IsLeftSideEvent != false) {
            size += 1 + 1;
          }
          if (IsSideEvent2 != false) {
            size += 1 + 1;
          }
          if (IsRightSideEvent != false) {
            size += 1 + 1;
          }
          if (IsPedestrianCrash != false) {
            size += 1 + 1;
          }
          if (IsUknownType != false) {
            size += 1 + 1;
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(CrashDetection other) {
          if (other == null) {
            return;
          }
          if (other.IsFrontPreTension != false) {
            IsFrontPreTension = other.IsFrontPreTension;
          }
          if (other.IsEarsRear != false) {
            IsEarsRear = other.IsEarsRear;
          }
          if (other.IsHighSevFront != false) {
            IsHighSevFront = other.IsHighSevFront;
          }
          if (other.IsSideEvent != false) {
            IsSideEvent = other.IsSideEvent;
          }
          if (other.IsRearEvent != false) {
            IsRearEvent = other.IsRearEvent;
          }
          if (other.IsLowSevFront != false) {
            IsLowSevFront = other.IsLowSevFront;
          }
          if (other.IsNonEarRoll != false) {
            IsNonEarRoll = other.IsNonEarRoll;
          }
          if (other.IsEarRoll != false) {
            IsEarRoll = other.IsEarRoll;
          }
          if (other.IsLeftSideEvent != false) {
            IsLeftSideEvent = other.IsLeftSideEvent;
          }
          if (other.IsSideEvent2 != false) {
            IsSideEvent2 = other.IsSideEvent2;
          }
          if (other.IsRightSideEvent != false) {
            IsRightSideEvent = other.IsRightSideEvent;
          }
          if (other.IsPedestrianCrash != false) {
            IsPedestrianCrash = other.IsPedestrianCrash;
          }
          if (other.IsUknownType != false) {
            IsUknownType = other.IsUknownType;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 8: {
                IsFrontPreTension = input.ReadBool();
                break;
              }
              case 16: {
                IsEarsRear = input.ReadBool();
                break;
              }
              case 24: {
                IsHighSevFront = input.ReadBool();
                break;
              }
              case 32: {
                IsSideEvent = input.ReadBool();
                break;
              }
              case 40: {
                IsRearEvent = input.ReadBool();
                break;
              }
              case 48: {
                IsLowSevFront = input.ReadBool();
                break;
              }
              case 56: {
                IsNonEarRoll = input.ReadBool();
                break;
              }
              case 64: {
                IsEarRoll = input.ReadBool();
                break;
              }
              case 72: {
                IsLeftSideEvent = input.ReadBool();
                break;
              }
              case 80: {
                IsSideEvent2 = input.ReadBool();
                break;
              }
              case 88: {
                IsRightSideEvent = input.ReadBool();
                break;
              }
              case 96: {
                IsPedestrianCrash = input.ReadBool();
                break;
              }
              case 104: {
                IsUknownType = input.ReadBool();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message is to update the status of the call.
  ///&lt;div class=exmsg-main>
  /// &lt;h4>ECallStatusUpdate Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1489600243281
  /// 		messageId: 2
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.ecallStatusUpdate]
  /// 		 {
  /// 		  ecallStatusEnum: DIAL
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>&lt;/div>
  /// </summary>
  public sealed partial class ECallStatusUpdate : pb::IMessage<ECallStatusUpdate> {
    private static readonly pb::MessageParser<ECallStatusUpdate> _parser = new pb::MessageParser<ECallStatusUpdate>(() => new ECallStatusUpdate());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ECallStatusUpdate> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ECallStatusUpdate(ECallStatusUpdate other) : this() {
      ecallStatusEnum_ = other.ecallStatusEnum_;
    }

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

    /// <summary>Field number for the "ecallStatusEnum" field.</summary>
    public const int EcallStatusEnumFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ECallStatusUpdate.Types.ECallStatusEnum ecallStatusEnum_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallStatusUpdate.Types.ECallStatusEnum EcallStatusEnum {
      get { return ecallStatusEnum_; }
      set {
        ecallStatusEnum_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ECallStatusUpdate other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EcallStatusEnum != other.EcallStatusEnum) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (EcallStatusEnum != 0) hash ^= EcallStatusEnum.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 (EcallStatusEnum != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) EcallStatusEnum);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (EcallStatusEnum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EcallStatusEnum);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ECallStatusUpdate other) {
      if (other == null) {
        return;
      }
      if (other.EcallStatusEnum != 0) {
        EcallStatusEnum = other.EcallStatusEnum;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            ecallStatusEnum_ = (global::Com.Fca.Uconnect.Global.ECallStatusUpdate.Types.ECallStatusEnum) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ECallStatusUpdate message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ECallStatusEnum {
        /// <summary>
        //// Dialing
        /// </summary>
        [pbr::OriginalName("DIAL")] Dial = 0,
        /// <summary>
        ////This represents the call is cancelled.
        /// </summary>
        [pbr::OriginalName("CANCELLED")] Cancelled = 1,
        /// <summary>
        ////This represents the call is terminated.
        /// </summary>
        [pbr::OriginalName("TERMINATED")] Terminated = 2,
        /// <summary>
        ////This is sent when TBM detects dropped call without a terminate tone.
        /// </summary>
        [pbr::OriginalName("DROPPED_CALL")] DroppedCall = 3,
        /// <summary>
        ////This is sent when TBM fails to Establish CALL.
        /// </summary>
        [pbr::OriginalName("CALL_FAILED")] CallFailed = 4,
        /// <summary>
        //// Sent during retry when call connection fails to be established.
        /// </summary>
        [pbr::OriginalName("ATTEMPT_FAILED")] AttemptFailed = 5,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message is to request Veh data from Client and it has no elements.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>ECallVehDataRequest Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1489600243281
  /// 		messageId: 1
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.ecallVehDataRequest]
  /// 		 {
  /// 			callStatus:TERMINATED
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>&lt;/div>
  /// </summary>
  public sealed partial class ECallVehDataRequest : pb::IMessage<ECallVehDataRequest> {
    private static readonly pb::MessageParser<ECallVehDataRequest> _parser = new pb::MessageParser<ECallVehDataRequest>(() => new ECallVehDataRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ECallVehDataRequest> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ECallVehDataRequest(ECallVehDataRequest other) : this() {
      callStatus_ = other.callStatus_;
    }

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

    /// <summary>Field number for the "callStatus" field.</summary>
    public const int CallStatusFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ECallVehDataRequest.Types.CallStatusEnum callStatus_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallVehDataRequest.Types.CallStatusEnum CallStatus {
      get { return callStatus_; }
      set {
        callStatus_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ECallVehDataRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CallStatus != other.CallStatus) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (CallStatus != 0) hash ^= CallStatus.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 (CallStatus != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) CallStatus);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (CallStatus != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) CallStatus);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ECallVehDataRequest other) {
      if (other == null) {
        return;
      }
      if (other.CallStatus != 0) {
        CallStatus = other.CallStatus;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            callStatus_ = (global::Com.Fca.Uconnect.Global.ECallVehDataRequest.Types.CallStatusEnum) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ECallVehDataRequest message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum CallStatusEnum {
        /// <summary>
        ////Terminated
        /// </summary>
        [pbr::OriginalName("TERMINATED")] Terminated = 0,
        /// <summary>
        ////Terminated for Other Reasons.
        /// </summary>
        [pbr::OriginalName("TERMINATED_OTHER")] TerminatedOther = 1,
        /// <summary>
        //// Call is not terminated ,send the data and stay on line.
        /// </summary>
        [pbr::OriginalName("NOT_TERMINATED")] NotTerminated = 2,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message sends Veh data to SDP when it requests for Veh data.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>ECallVehDataRequest Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1489600243281
  /// 		messageId: 3
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.ecallVehDataResponse]
  /// 		 {
  /// 		  ecallDataUpload
  /// 		 {
  /// 		  vehicleId: "1234AXFGFGHGH4566"
  /// 		  isPositionTrusted: true
  /// 		  timeStamp: 1489600238256
  /// 		  vehicleLocation
  /// 		  {
  /// 			longitude: 43.9999
  /// 			latitude: -84.54636
  /// 		  }
  /// 		 numberOfPassengers: 1
  /// 		 airBagStatus
  /// 		 {
  /// 		  driver: false
  /// 		  driverKnee: false
  /// 		  passenger: false
  /// 		  passengerKnee: false
  /// 		  leftSideCurtain: false
  /// 		  leftSeat: false
  /// 		  rightSeat: false
  /// 		}
  /// 		  vehicleSpeed: 75.0
  /// 		  tyrePressure: 45.0
  /// 		  engineStatus: STOP
  /// 	    }
  /// 	    }
  /// 	   }
  /// 	  }
  ///	&lt;/code>
  ///   &lt;/div>&lt;/div>
  /// </summary>
  public sealed partial class ECallVehDataResponse : pb::IMessage<ECallVehDataResponse> {
    private static readonly pb::MessageParser<ECallVehDataResponse> _parser = new pb::MessageParser<ECallVehDataResponse>(() => new ECallVehDataResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ECallVehDataResponse> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ECallVehDataResponse(ECallVehDataResponse other) : this() {
      ECallDataUpload = other.eCallDataUpload_ != null ? other.ECallDataUpload.Clone() : null;
      response_ = other.response_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
    }

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

    /// <summary>Field number for the "eCallDataUpload" field.</summary>
    public const int ECallDataUploadFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ECallDataUpload eCallDataUpload_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallDataUpload ECallDataUpload {
      get { return eCallDataUpload_; }
      set {
        eCallDataUpload_ = value;
      }
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 2;
    private global::Com.Fca.Uconnect.Global.ECallVehDataResponse.Types.ResponseEnum response_ = 0;
    /// <summary>
    //// Response (Success or Failure)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ECallVehDataResponse.Types.ResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 3;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 4;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ECallVehDataResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ECallDataUpload, other.ECallDataUpload)) return false;
      if (Response != other.Response) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (eCallDataUpload_ != null) hash ^= ECallDataUpload.GetHashCode();
      if (Response != 0) hash ^= Response.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.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 (eCallDataUpload_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ECallDataUpload);
      }
      if (Response != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Response);
      }
      if (IsTransient != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(FailureReasonCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (eCallDataUpload_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ECallDataUpload);
      }
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ECallVehDataResponse other) {
      if (other == null) {
        return;
      }
      if (other.eCallDataUpload_ != null) {
        if (eCallDataUpload_ == null) {
          eCallDataUpload_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload();
        }
        ECallDataUpload.MergeFrom(other.ECallDataUpload);
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
    }

    [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 (eCallDataUpload_ == null) {
              eCallDataUpload_ = new global::Com.Fca.Uconnect.Global.ECallDataUpload();
            }
            input.ReadMessage(eCallDataUpload_);
            break;
          }
          case 16: {
            response_ = (global::Com.Fca.Uconnect.Global.ECallVehDataResponse.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 24: {
            IsTransient = input.ReadBool();
            break;
          }
          case 32: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ECallVehDataResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ResponseEnum {
        [pbr::OriginalName("SUCCESS")] Success = 0,
        [pbr::OriginalName("FAILURE")] Failure = 1,
      }

    }
    #endregion

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UpdateEcallPhoneNumbers(UpdateEcallPhoneNumbers other) : this() {
      phoneList_ = other.phoneList_;
      phoneListMessages_ = other.phoneListMessages_.Clone();
    }

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

    /// <summary>Field number for the "phoneList" field.</summary>
    public const int PhoneListFieldNumber = 1;
    private pb::ByteString phoneList_ = pb::ByteString.Empty;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString PhoneList {
      get { return phoneList_; }
      set {
        phoneList_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "phoneListMessages" field.</summary>
    public const int PhoneListMessagesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.PhoneListMessage> _repeated_phoneListMessages_codec
        = pb::FieldCodec.ForMessage(18, global::Com.Fca.Uconnect.Global.PhoneListMessage.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PhoneListMessage> phoneListMessages_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PhoneListMessage>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PhoneListMessage> PhoneListMessages {
      get { return phoneListMessages_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(UpdateEcallPhoneNumbers other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (PhoneList != other.PhoneList) return false;
      if(!phoneListMessages_.Equals(other.phoneListMessages_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (PhoneList.Length != 0) hash ^= PhoneList.GetHashCode();
      hash ^= phoneListMessages_.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 (PhoneList.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(PhoneList);
      }
      phoneListMessages_.WriteTo(output, _repeated_phoneListMessages_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (PhoneList.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(PhoneList);
      }
      size += phoneListMessages_.CalculateSize(_repeated_phoneListMessages_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(UpdateEcallPhoneNumbers other) {
      if (other == null) {
        return;
      }
      if (other.PhoneList.Length != 0) {
        PhoneList = other.PhoneList;
      }
      phoneListMessages_.Add(other.phoneListMessages_);
    }

    [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: {
            PhoneList = input.ReadBytes();
            break;
          }
          case 18: {
            phoneListMessages_.AddEntriesFrom(input, _repeated_phoneListMessages_codec);
            break;
          }
        }
      }
    }

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PhoneListMessage(PhoneListMessage other) : this() {
      enableCallType_ = other.enableCallType_;
      primaryPhoneNumber_ = other.primaryPhoneNumber_;
      secondaryPhoneNumber_ = other.secondaryPhoneNumber_;
      callTypeEnum_ = other.callTypeEnum_;
    }

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

    /// <summary>Field number for the "EnableCallType" field.</summary>
    public const int EnableCallTypeFieldNumber = 1;
    private bool enableCallType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool EnableCallType {
      get { return enableCallType_; }
      set {
        enableCallType_ = value;
      }
    }

    /// <summary>Field number for the "PrimaryPhoneNumber" field.</summary>
    public const int PrimaryPhoneNumberFieldNumber = 2;
    private string primaryPhoneNumber_ = "";
    /// <summary>
    //// Primary Phone Number for the feature
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string PrimaryPhoneNumber {
      get { return primaryPhoneNumber_; }
      set {
        primaryPhoneNumber_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "SecondaryPhoneNumber" field.</summary>
    public const int SecondaryPhoneNumberFieldNumber = 3;
    private string secondaryPhoneNumber_ = "";
    /// <summary>
    //// Secondary Phone Number for the feature
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string SecondaryPhoneNumber {
      get { return secondaryPhoneNumber_; }
      set {
        secondaryPhoneNumber_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "callTypeEnum" field.</summary>
    public const int CallTypeEnumFieldNumber = 4;
    private global::Com.Fca.Uconnect.Global.PhoneListMessage.Types.CallType callTypeEnum_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.PhoneListMessage.Types.CallType CallTypeEnum {
      get { return callTypeEnum_; }
      set {
        callTypeEnum_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PhoneListMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EnableCallType != other.EnableCallType) return false;
      if (PrimaryPhoneNumber != other.PrimaryPhoneNumber) return false;
      if (SecondaryPhoneNumber != other.SecondaryPhoneNumber) return false;
      if (CallTypeEnum != other.CallTypeEnum) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (EnableCallType != false) hash ^= EnableCallType.GetHashCode();
      if (PrimaryPhoneNumber.Length != 0) hash ^= PrimaryPhoneNumber.GetHashCode();
      if (SecondaryPhoneNumber.Length != 0) hash ^= SecondaryPhoneNumber.GetHashCode();
      if (CallTypeEnum != 0) hash ^= CallTypeEnum.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 (EnableCallType != false) {
        output.WriteRawTag(8);
        output.WriteBool(EnableCallType);
      }
      if (PrimaryPhoneNumber.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(PrimaryPhoneNumber);
      }
      if (SecondaryPhoneNumber.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SecondaryPhoneNumber);
      }
      if (CallTypeEnum != 0) {
        output.WriteRawTag(32);
        output.WriteEnum((int) CallTypeEnum);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (EnableCallType != false) {
        size += 1 + 1;
      }
      if (PrimaryPhoneNumber.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(PrimaryPhoneNumber);
      }
      if (SecondaryPhoneNumber.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SecondaryPhoneNumber);
      }
      if (CallTypeEnum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) CallTypeEnum);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PhoneListMessage other) {
      if (other == null) {
        return;
      }
      if (other.EnableCallType != false) {
        EnableCallType = other.EnableCallType;
      }
      if (other.PrimaryPhoneNumber.Length != 0) {
        PrimaryPhoneNumber = other.PrimaryPhoneNumber;
      }
      if (other.SecondaryPhoneNumber.Length != 0) {
        SecondaryPhoneNumber = other.SecondaryPhoneNumber;
      }
      if (other.CallTypeEnum != 0) {
        CallTypeEnum = other.CallTypeEnum;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            EnableCallType = input.ReadBool();
            break;
          }
          case 18: {
            PrimaryPhoneNumber = input.ReadString();
            break;
          }
          case 26: {
            SecondaryPhoneNumber = input.ReadString();
            break;
          }
          case 32: {
            callTypeEnum_ = (global::Com.Fca.Uconnect.Global.PhoneListMessage.Types.CallType) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the PhoneListMessage message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum CallType {
        [pbr::OriginalName("SOS")] Sos = 0,
        [pbr::OriginalName("ASOS_IMPACT")] AsosImpact = 1,
      }

    }
    #endregion

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RequestEcallPhoneNumbers(RequestEcallPhoneNumbers other) : this() {
      phoneListMessages_ = other.phoneListMessages_.Clone();
    }

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

    /// <summary>Field number for the "phoneListMessages" field.</summary>
    public const int PhoneListMessagesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.PhoneListMessage> _repeated_phoneListMessages_codec
        = pb::FieldCodec.ForMessage(10, global::Com.Fca.Uconnect.Global.PhoneListMessage.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PhoneListMessage> phoneListMessages_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PhoneListMessage>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PhoneListMessage> PhoneListMessages {
      get { return phoneListMessages_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(RequestEcallPhoneNumbers other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!phoneListMessages_.Equals(other.phoneListMessages_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= phoneListMessages_.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) {
      phoneListMessages_.WriteTo(output, _repeated_phoneListMessages_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += phoneListMessages_.CalculateSize(_repeated_phoneListMessages_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(RequestEcallPhoneNumbers other) {
      if (other == null) {
        return;
      }
      phoneListMessages_.Add(other.phoneListMessages_);
    }

    [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: {
            phoneListMessages_.AddEntriesFrom(input, _repeated_phoneListMessages_codec);
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
