{   "name": "AGL Virtual Car",
	"version": "2.0",
	"extra_sources": [],
	"initializers": [],
	"loopers": [],
	"buses": {},
	"commands": [],
	"messages": {
		"0x620": {
			"bus": "hs",
			"is_fd" : false,
			"is_j1939" : false,
			"signals": {
				"doors.driver.open": {
					"generic_name": "doors.front_left.open",
					"bit_position": 43,
					"bit_size": 1,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"},
				"doors.passenger.open": {
					"generic_name": "doors.front_right.open",
					"bit_position": 44,
					"bit_size": 1,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"},
				"doors.rearleft.open": {
					"generic_name": "doors.rear_left.open",
					"bit_position": 46,
					"bit_size": 1,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"},
				"doors.rearright.open": {
					"generic_name": "doors.rear_right.open",
					"bit_position": 45,
					"bit_size": 4,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"},
				"doors.coffer.open": {
					"generic_name": "doors.boot.open",
					"bit_position": 47,
					"bit_size": 1,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"}
			}
		},
		"0x799": {
			"bus": "hs",
			"is_fd" : false,
			"is_j1939" : false,
			"signals": {
				"windows.driver.open": {
					"generic_name": "windows.front_left.open",
					"bit_position": 43,
					"bit_size": 1,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"},
				"windows.passenger.open": {
					"generic_name": "windows.front_right.open",
					"bit_position": 44,
					"bit_size": 1,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"},
				"windows.rearleft.open": {
					"generic_name": "windows.rear_left.open",
					"bit_position": 46,
					"bit_size": 1,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"},
				"windows.rearright.open": {
					"generic_name": "windows.rear_right.open",
					"bit_position": 45,
					"bit_size": 4,
					"factor": 1.0,
					"offset": 0,
					"writable": true,
					"decoder": "decoder_t::decode_boolean"}
		}
	},
	"0x3D9": {
	"bus": "hs",
	"is_fd" : false,
	"is_extended": false,
	"is_j1939" : false,
	"signals": {
		"PT_FuelLevelPct": {
			"generic_name": "fuel.level",
			"bit_position": 8,
			"bit_size": 8,
			"factor": 0.392157,
			"offset": 0,
			"writable": true
		},
		"PT_EngineSpeed": {
			"generic_name": "engine.speed",
			"bit_position": 16,
			"bit_size": 16,
			"factor": 0.25,
			"offset": 0,
			"writable": true
		},
		"PT_FuelLevelLow": {
			"generic_name": "fuel.level.low",
			"bit_position": 55,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"writable": true,
			"decoder": "decoder_t::decode_boolean"
		}
	}
	},
	"0x4D1": {
	"bus": "hs",
	"is_fd" : false,
	"is_extended": false,
	"is_j1939" : false,
	"signals": {
		"PT_EngineOilTempHigh": {
			"generic_name": "engine.oil.temp.high",
			"bit_position": 7,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"writable": true,
			"decoder": "decoder_t::decode_boolean"
		},
		"PT_EngineOilTemp": {
			"generic_name": "engine.oil.temp",
			"bit_position": 16,
			"bit_size": 8,
			"factor": 1,
			"offset": 0,
			"writable": true
		}
	}
	},
	"0x3E9": {
	"bus": "hs",
	"is_fd" : false,
	"is_extended": false,
	"is_j1939" : false,
	"signals": {
		"PT_VehicleAvgSpeed": {
			"generic_name": "vehicle.average.speed",
			"bit_position": 0,
			"bit_size": 15,
			"factor": 0.015625,
			"offset": 0,
			"writable": false
		}
	}
	},
	"0x30": {
	"bus": "ls",
	"is_fd" : false,
	"is_extended": true,
	"is_j1939" : false,
	"signals": {
		"LeftTemperature": {
			"generic_name": "hvac.temperature.left",
			"bit_position": 0,
			"bit_size": 8,
			"factor": 1,
			"offset": 0,
			"writable": true
		},
		"RightTemperature": {
			"generic_name": "hvac.temperature.right",
			"bit_position": 8,
			"bit_size": 8,
			"factor": 1,
			"offset": 0,
			"writable": true
		},
		"Temperature": {
			"generic_name": "hvac.temperature.average",
			"bit_position": 16,
			"bit_size": 8,
			"factor": 1,
			"offset": 0,
			"writable": true
		},
		"FanSpeed": {
			"generic_name": "hvac.fan.speed",
			"bit_position": 32,
			"bit_size": 8,
			"factor": 23.529411765,
			"offset": 0,
			"writable": true
		}
	}
	},
	"0x21": {
	"bus": "ls",
	"is_fd" : false,
	"is_extended": false,
	"is_j1939" : false,
	"length" : 8,
	"signals": {
		"SW_Previous": {
			"generic_name": "steering_wheel.previous",
			"bit_position": 32,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_VolumeUp": {
			"generic_name": "steering_wheel.volume.up",
			"bit_position": 33,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_Mode": {
			"generic_name": "steering_wheel.mode",
			"bit_position": 34,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_VolumeDown": {
			"generic_name": "steering_wheel.volume.down",
			"bit_position": 35,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_Next": {
			"generic_name": "steering_wheel.next",
			"bit_position": 36,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_Info": {
			"generic_name": "steering_wheel.info",
			"bit_position": 38,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_VolumeMute": {
			"generic_name": "steering_wheel.volume.mute",
			"bit_position": 39,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_Voice": {
			"generic_name": "steering_wheel.voice",
			"bit_position": 45,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_PhoneHangup": {
			"generic_name": "steering_wheel.phone.hangup",
			"bit_position": 46,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_PhoneCall": {
			"generic_name": "steering_wheel.phone.call",
			"bit_position": 47,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_CruiseEnable": {
			"generic_name": "steering_wheel.cruise.enable",
			"bit_position": 48,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_CruiseResume": {
			"generic_name": "steering_wheel.cruise.resume",
			"bit_position": 49,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_CruiseSet": {
			"generic_name": "steering_wheel.cruise.set",
			"bit_position": 51,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_CruiseCancel": {
			"generic_name": "steering_wheel.cruise.cancel",
			"bit_position": 52,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_CruiseLimit": {
			"generic_name": "steering_wheel.cruise.limit",
			"bit_position": 54,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_CruiseDistance": {
			"generic_name": "steering_wheel.cruise.distance",
			"bit_position": 55,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_Horn": {
			"generic_name": "steering_wheel.horn",
			"bit_position": 56,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		},
		"SW_LaneDepartureWarning": {
			"generic_name": "steering_wheel.lane_departure_warning",
			"bit_position": 63,
			"bit_size": 1,
			"factor": 1,
			"offset": 0,
			"decoder": "decoder_t::decode_boolean",
			"writable": false
		}
	}
	}
},
"diagnostic_messages": [
		{
			"bus": "hs",
			"pid": 4,
			"name": "engine.load",
			"frequency": 5,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 5,
			"name": "engine.coolant.temperature",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 10,
			"name": "fuel.pressure",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 11,
			"name": "intake.manifold.pressure",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 12,
			"name": "engine.speed",
			"frequency": 5,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 13,
			"name": "vehicle.speed",
			"frequency": 5,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 15,
			"name": "intake.air.temperature",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 16,
			"name": "mass.airflow",
			"frequency": 5,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 17,
			"name": "throttle.position",
			"frequency": 5,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 31,
			"name": "running.time",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 45,
			"name": "EGR.error",
			"frequency": 0,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 47,
			"name": "fuel.level",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 51,
			"name": "barometric.pressure",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 70,
			"name": "ambient.air.temperature",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 76,
			"name": "commanded.throttle.position",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 82,
			"name": "ethanol.fuel.percentage",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 90,
			"name": "accelerator.pedal.position",
			"frequency": 5,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 91,
			"name": "hybrid.battery-pack.remaining.life",
			"frequency": 5,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 92,
			"name": "engine.oil.temperature",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 94,
			"name": "engine.fuel.rate",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		},
		{
			"bus": "hs",
			"pid": 99,
			"name": "engine.torque",
			"frequency": 1,
			"decoder": "decoder_t::decode_obd2_response"
		}
	]
}