/**
 * <p class=proto-main>The common proto is utilized for VehicleInfo and VehicleStatus.</p>
 *
 * <div class=proto-hier>
 * <a href="#com.fca.uconnect.global.VehicleInfo">VehicleInfo</a>
 *
 * <a href="#com.fca.uconnect.global.VehicleStatus">VehicleStatus</a>
 *
 * <a href="#com.fca.uconnect.global.TirePressure">TirePressure </a>
 * </div>
 *
 *  <h3 class=change-log-hdr> Change Log</h3>
 *  <table id="change-log" class="change-log"><thead><tr>
 *	<th>Version</th><th>Date</th><th>Notes</th></tr></thead>
 *   <tbody>
 *	<tr><td>1.11</td><td>2018-05-29</td><td>Added Model and Year details per Assemla 446</td></tr>
 *	<tr><td>1.11</td><td>2018-05-10</td><td>Release of initial Proto</td></tr>
 * <tr><td>1.1</td><td>2017-09-20</td><td>Release of initial Proto</td></tr>
 *	<tr><td>1.0</td><td>2017-09-20</td><td>Release of initial Proto</td></tr>
 *	</tbody></table>
 *
 */
syntax="proto3";
package com.fca.uconnect.global;
import public "Global_Uconnect_GNSS.proto";
/**
 * This message is common for ECall and Roadside assistance to get Vehicle Information.
 */
message VehicleInfo{
 Location vehicleLocation=1;
// string   vehicleHeading=2;///Direction where Vehicle is Pointing to .
 // int32    estimatedHeadingError=3;//This represents error value in case if Vehicle Heading(0x80000000) does not have a valid measurement.
 float    vehicleSpeed = 4;///This represents the current speed of the Vehicle.
 int32 odometer =5;/// Total distance traveled by Vehicle.
 EngineStatusEnum engineStatusEnum=6;///The status of the Engine/Ignition
 string language = 7;/// The values shall be formatted according to the ISO alpha-3/639.2 standard.
 string country = 8;/// The values shall be formatted according to the ISO Alpha-2 standard.
 VehicleTypeEnum vehicleType = 9;//The Type of the Vehicle that this is.
 string vin = 10;///Vehicle Identification Number
 string brand = 11;///Vehicle Brand
 string model = 14; /// Vehicle Model
 string year = 15; /// Vehicle Year
 Location recentVehicleLocation1 = 12;///This is to know which side Major highway  the vehicle is located on,This information is needed for Routing an Emergency purpose.
 Location recentVehicleLocation2 = 13;///This information is needed for Routing an Emergency purpose.
    enum EngineStatusEnum{
		STOP=0;
		CRANK=1;
		IDLE=2;
		RUN=3;
		STALL=4;
		REQUESTSTART=5;
	 }
  enum VehicleTypeEnum{
	    PASSENGER_CLASSM1=0;
	    BUSESANDCOACHES_CLASSM2=1;
	    BUSESANDCOACHES_CLASSM3=2;
	    LIGHTCOMMERCIAL_CLASSN1=3;
	    HEAVYDUTY_CLASSN2=4;
	    HEAVYDUTY_CLASSN3=5;
	    MOTORCYCLE_CLASSL1E=6;
	    MOTORCYCLE_CLASSL2E=7;
	    MOTORCYCLE_CLASSL3E=8;
	    MOTORCYCLE_CLASSL4E=9;
	    MOTORCYCLE_CLASSL5E=10;
	    MOTORCYCLE_CLASSL6E=11;
	    MOTORCYCLE_CLASSL7E=12;
	}
}

message TirePressure{

		enum TireStatusEnum {
			NORMAL = 0; ///Inflation Normal
			LOW = 1; ///Inflation Low (Under Inflated)
			HIGH = 2;/// Inflation High
			SNA = 3; /// Signal not available
			SIGNIFICANTLY_LOW = 4; /// Significantly Under Inflated)
		}

	 	 float flTirePressure=1;///Front Left Tire Pressure; psi.
		 TireStatusEnum flTireSts=7;///Front Left Tire Status.
	 	 float frTirePressure=2;///Front Right Tire Pressure; psi.
		 TireStatusEnum frTireSts=8;///Front Right Tire Status.
	 	 float rlTirePressure=3;///Rear Left Tire Pressure; psi.
		 TireStatusEnum rlTireSts=9;///Rear Left Tire Status.
	 	 float rrTirePressure=4;///Rear Right Tire Pressure; psi .
		 TireStatusEnum rrTireSts=10;///Rear Right Tire Status.
	 	 float rl2TirePressure=5;///Rear Left interior (second) Tire Pressure; psi.
	 	 float rr2TirePressure=6;///Rear Right interior (second) Tire Pressure; psi.
	 }
/**
 * This message is to define Each Door/Window/Trunk/Hood/Engine status. Door/Window/Trunk/Hood should only report the status that has changed
 */
message VehicleStatus {

	map<string,Type> vehicleStatusType =6;///This is to identify the status being provided Door/window/Trunk/Hood Status.
	map<string, Status> vehicleStatusParameters = 1;///This is the Status.
	EngineStatusEnum engineStatusEnum=2;///The status of the Engine/Ignition
     int32 fuelLevel = 3;
     int32 odometer = 4;
     int32 interiorTemperature = 5;
     Location vehicleLocationType = 7;
    enum EngineStatusEnum{
		STOP=0;
		CRANK=1;
		IDLE=2;
		RUN=3;
		STALL=4;
		REQUESTSTART=5;
	 }
	enum Status{
		CLOSED =0;
		CLOSED_UNLOCKED =1;
		CLOSED_LOCKED =2;
		OPENED =3;
	}
	enum Type{
		FLDOOR = 0;
		FRDOOR = 1;
		RLDOOR = 2;
		RRDOOR = 3;
		FLWINDOW = 4;
		FRWINDOW = 5;
		LLWINDOW = 6;
		LRWINDOW = 7;
		HOOD = 8;
		TRUNK = 9;
		LIFTGATE = 10;
	}
}
