{   "name": "AGL Virtual Car",
    "version": "2.0",
	"extra_sources": [],
	"initializers": [],
	"loopers": [],
	"buses": {},
	"commands": [],
	"messages": {
		"0x620": {
			"bus": "hs",
			"is_fd" : false,
			"is_extended": false,
			"is_j1939" : false,
			"length" : 8,
			"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_extended": false,
			"is_j1939" : false,
			"length" : 8,
			"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" : true,
	"is_extended": false,
	"is_j1939" : false,
	"length" : 8,
	"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,
	"length" : 8,
	"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,
	"length" : 8,
	"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,
	"length" : 8,
	"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
		}
	}
    },
    "0x111": {
        "bus": "ls",
        "is_fd" : false,
        "is_extended": false,
        "is_j1939" : false,
        "is_isotp" : true,
        "length" : 16,
        "signals": {
            "sig11": {
                "generic_name": "sig1.1",
                "bit_position": 0,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            },
            "sig12": {
                "generic_name": "sig1.2",
                "bit_position": 16,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            },
            "sig21": {
                "generic_name": "sig2.1",
                "bit_position": 32,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            },
            "sig22": {
                "generic_name": "sig2.2",
                "bit_position": 48,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            },
            "sig31": {
                "generic_name": "sig3.1",
                "bit_position": 64,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            },
            "sig32": {
                "generic_name": "sig3.2",
                "bit_position": 80,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            },
            "sig41": {
                "generic_name": "sig4.1",
                "bit_position": 96,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            },
            "sig42": {
                "generic_name": "sig4.2",
                "bit_position": 112,
                "bit_size": 16,
                "factor": 1,
                "offset": 0,
                "writable": true
            }
        }
    },
    "61442": {
        "comment": "Electronic Transmission Controller 1",
        "length": 8,
        "name": "ETC1",
        "bus" : "j1939",
        "is_fd" : false,
        "is_extended": false,
        "is_j1939" : true,
        "signals" : {
            "Trns.Trque.Converter.Lockup.Engaged" : {
                "generic_name": "Trns.Trque.Converter.Lockup.Engaged",
                "bit_position": 2,
                "bit_size": 2,
                "factor": 1,
                "offset": 0,
                "comment": "State signal which indicates whether the torque converter lockup is engaged.",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true,
                "states": {
                    "TorqueConverterLockupDisengaged": [0],
                    "TorqueConverterLockupEngaged": [1],
                    "Error": [2],
                    "NotAvailable": [3]
                }
            },
            "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess" : {
                "generic_name": "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",
                "bit_position": 6,
                "bit_size": 2,
                "factor": 1,
                "offset": 0,
                "comment": "State signal indicating whether or not the transmission torque converter lock up clutch is transitioning between being",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true,
                "states": {
                    "TransitionIsNotInProcess": [0],
                    "TransitionIsInProcess": [1],
                    "Error": [2],
                    "NotAvailable": [3]
                }
            },
            "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl" : {
                "generic_name": "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",
                "bit_position": 56,
                "bit_size": 8,
                "factor": 1,
                "offset": 0,
                "comment": "The source address of the SAE J1939 device currently controlling the transmission.",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true
            },
            "Momentary.Eng.Max.Power.Enable" : {
                "generic_name": "Momentary.Eng.Max.Power.Enable",
                "bit_position": 36,
                "bit_size": 2,
                "factor": 1,
                "offset": 0,
                "comment": "Momentarily Requesting highest torque map from the engine control",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true,
                "states": {
                    "notRqingMaxPowerAvailable": [0],
                    "mmntarilyRqingMaxPowerAvailable": [1],
                    "fault": [2],
                    "notAvailable": [3]
                }
            },
            "Trans.Input.Shaft.Speed" : {
                "generic_name": "Trans.Input.Shaft.Speed",
                "bit_position": 40,
                "bit_size": 16,
                "factor": 0.125,
                "offset": 0,
                "comment": "Rotational velocity of the primary shaft transferring power into the transmission.",
                "unit": "rpm",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true
            },
            "Progressive.Shift.Disable" : {
                "generic_name": "Progressive.Shift.Disable",
                "bit_position": 34,
                "bit_size": 2,
                "factor": 1,
                "offset": 0,
                "comment": "Command signal used to indicate that progressive shifting by the engine should be disallowed.",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true,
                "states": {
                    "ProgressiveShiftIsNotDisabled": [0],
                    "ProgressiveShiftIsDisabled": [1],
                    "Reserved": [2],
                    "TakeNoAction": [3]
                }
            },
            "Eng.Momentary.Overspeed.Enable" : {
                "generic_name": "Eng.Momentary.Overspeed.Enable",
                "bit_position": 32,
                "bit_size": 2,
                "factor": 1,
                "offset": 0,
                "comment": "Command signal used to indicate that the engine speed may be boosted up to the maximum engine overspeed value to",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true,
                "states": {
                    "MomentaryEngOverspeedIsDisabled": [0],
                    "MomentaryEngOverspeedIsEnabled": [1],
                    "Reserved": [2],
                    "TakeNoAction": [3]
                }
            },
            "Percent.Clutch.Slip" : {
                "generic_name": "Percent.Clutch.Slip",
                "bit_position": 24,
                "bit_size": 8,
                "factor": 0.4,
                "offset": 0,
                "comment": "Parameter which represents the ratio of input shaft speed to current engine speed (in percent).",
                "unit": "%",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true
            },
            "Trans.Output.Shaft.Speed" : {
                "generic_name": "Trans.Output.Shaft.Speed",
                "bit_position": 8,
                "bit_size": 16,
                "factor": 0.125,
                "offset": 0,
                "comment": "Calculated speed of the transmission output shaft.",
                "unit": "rpm",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true
            },
            "Trans.Shift.In.Process" : {
                "generic_name": "Trans.Shift.In.Process",
                "bit_position": 4,
                "bit_size": 2,
                "factor": 1,
                "offset": 0,
                "comment": "Indicates that the transmission is in process of shifting from the current gear to the selected gear.",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true,
                "states": {
                    "ShiftIsNotInProcess": [0],
                    "ShiftInProcess": [1],
                    "Error": [2],
                    "NotAvailable": [3]
                }
            },
            "Trans.Driveline.Engaged" : {
                "generic_name": "Trans.Driveline.Engaged",
                "bit_position": 0,
                "bit_size": 2,
                "factor": 1,
                "offset": 0,
                "comment": "Driveline engaged indicates the transmission controlled portion of the driveline is engaged sufficiently to allow a transfer",
                "is_big_endian": false,
                "sign": 0,
                "writable" : true,
                "states": {
                    "DrivelineDisengaged": [0],
                    "DrivelineEngaged": [1],
                    "Error": [2],
                    "NotAvailable": [3]
                }
            }
        }
	},
	"61444": {
		"comment": "Electronic Engine Controller 1",
		"length": 8,
		"name": "EEC1",
		"bus" : "j1939",
		"is_fd" : false,
		"is_j1939" : true,
		"signals" : {
			"Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl" : {
				"generic_name": "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",
				"bit_position": 40,
				"bit_size": 8,
				"factor": 1,
				"offset": 0,
				"comment": "The source address of the SAE J1939 device currently controlling the engine.",
				"is_big_endian": false,
				"sign": 0
			},
			"Actl.Eng.Prcnt.Trque.High.Resolution" : {
				"generic_name": "Actl.Eng.Prcnt.Trque.High.Resolution",
				"bit_position": 4,
				"bit_size": 4,
				"factor": 0.125,
				"offset": 0,
				"comment": "This parameter displays an additional torque in percent of the reference engine torque.",
				"unit": "%",
				"is_big_endian": false,
				"sign": 0,
				"states": {
					"0000": [0],
					"0125": [1],
					"0875": [7],
					"1111NotAvailable": [8]
				}
			},
			"Eng.Demand.Percent.Torque" : {
				"generic_name": "Eng.Demand.Percent.Torque",
				"bit_position": 56,
				"bit_size": 8,
				"factor": 1,
				"offset": -125,
				"comment": "The requested torque output of the engine by all dynamic internal inputs, including smoke control, noise control and low",
				"unit": "%",
				"is_big_endian": false,
				"sign": 0
			},
			"Eng.Starter.Mode" : {
				"generic_name": "Eng.Starter.Mode",
				"bit_position": 48,
				"bit_size": 4,
				"factor": 1,
				"offset": 0,
				"comment": "There are several phases in a starting action and different reasons why a start cannot take place.",
				"is_big_endian": false,
				"sign": 0,
				"states": {
					"startNotRqed": [0],
					"starterActiveGearNotEngaged": [1],
					"starterActiveGearEngaged": [2],
					"strtFnshdStrtrNtActvAftrHvngBnA": [3],
					"strtrInhbtdDToEngAlreadyRunning": [4],
					"strtrInhbtdDTEngNtReadyForStart": [5],
					"strtrInhbtdDTDrvlnEnggdOthrTrns": [6],
					"strtrInhbtdDToActiveImmobilizer": [7],
					"strtrInhbtdDueToStarterOvertemp": [8],
					"1011Reserved": [9],
					"starterInhibitedReasonUnknown": [12],
					"error": [14],
					"notAvailable": [15]
				}
			},
			"Eng.Speed" : {
				"generic_name": "Eng.Speed",
				"bit_position": 24,
				"bit_size": 16,
				"factor": 0.125,
				"offset": 0,
				"comment": "Actual engine speed which is calculated over a minimum crankshaft angle of 720 degrees divided by the number of cylinders.",
				"unit": "rpm",
				"is_big_endian": false,
				"sign": 0
			},
			"Actual.Eng.Percent.Torque" : {
				"generic_name": "Actual.Eng.Percent.Torque",
				"bit_position": 16,
				"bit_size": 8,
				"factor": 1,
				"offset": -125,
				"comment": "The calculated output torque of the engine.",
				"unit": "%",
				"is_big_endian": false,
				"sign": 0
			},
			"Drivers.Demand.Eng.Percent.Torque" : {
				"generic_name": "Drivers.Demand.Eng.Percent.Torque",
				"bit_position": 8,
				"bit_size": 8,
				"factor": 1,
				"offset": -125,
				"comment": "The requested torque output of the engine by the driver.",
				"unit": "%",
				"is_big_endian": false,
				"sign": 0
			},
			"Eng.Torque.Mode" : {
				"generic_name": "Eng.Torque.Mode",
				"bit_position": 0,
				"bit_size": 4,
				"factor": 1,
				"offset": 0,
				"comment": "State signal which indicates which engine torque mode is currently generating, limiting, or controlling the torque.",
				"is_big_endian": false,
				"sign": 0,
				"states": {
					"Low idle governor/no request (de": [0],
					"Accelerator pedal/operator selec": [1],
					"Cruise control": [2],
					"PTO governor": [3],
					"Road speed governor": [4],
					"ASR control": [5],
					"Transmission control": [6],
					"ABS control": [7],
					"Torque limiting": [8],
					"High speed governor": [9],
					"Braking system": [10],
					"Remote accelerator": [11],
					"Not available": [15]
				}
			}
		}
	},
	"130306": {
		"name": "Wind.Data",
		"bus":"j1939",
		"comment":"Wind Data",
		"length": 8,
		"is_fd": false,
		"is_extended": false,
		"is_j1939": true,
		"byte_frame_is_big_endian": true,
		"bit_position_reversed": true,
		"signals": {
			"Sid": {
				"bit_position": 0,
				"bit_size": 8,
				"sign": 0,
				"generic_name": "Wind.Data.Sid"
			},
			"Wind.Speed": {
				"bit_position": 8,
				"bit_size": 16,
				"factor": 0.01,
				"sign": 0,
				"unit":"m/s",
				"generic_name": "Wind.Data.Wind.Speed"
			},
			"Wind.Angle": {
				"bit_position": 24,
				"bit_size": 16,
				"factor": 0.0001,
				"sign": 0,
				"unit":"rad",
				"generic_name": "Wind.Data.Wind.Angle"
			},
			"Reference": {
				"bit_position": 40,
				"bit_size": 3,
				"decoder": "decoder_t::decode_state",
				"sign": 0,
				"states": {
					"True (ground referenced to North)": [0],
					"Magnetic (ground referenced to Magnetic North)": [1],
					"Apparent": [2],
					"True (boat referenced)": [3],
					"True (water referenced)": [4]
				},
				"generic_name": "Wind.Data.Reference"
			},
			"Reserved": {
				"bit_position": 43,
				"bit_size": 21,
				"decoder": "decoder_t::decode_bytes",
				"sign": 0,
				"generic_name": "Wind.Data.Reserved"
			}
		}
	}
},
"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"
		}
	]
}