The VirtualMechanic plugin

Overview

The VirtualMechanic (VM) event-source plugin represents the low-level service that reports vehicle status to the system. The VM plugin will notify the HNM subsystem of caution and alert status conditions for relevant components in these categories:
  • Fluid
  • Traction
  • Braking
  • Powertrain
  • Electrical

The Virtual Mechanic app allows the user to view the status of these components in the platform's HMI:

The VM plugin subscribes to the /pps/qnxcar/sensors/status object, which the Virtual Mechanic app uses to report status values for all of its components.

Event types

The VM plugin generates two event types:
  • Caution
  • Alert

The caution status condition initially has the default priority, whereas the alert status condition has a priority that is one greater than the default. Note that the plugin monitors several categories of data, so each of these can potentially have different caution and alert priorities.

Here's the VM event-priorities section from the default policy.cfg file:
event-priorities {
				Caution {
					fuelLevel = 2
					washerFluidLevel = 1
					transmissionFluidLevel = 2
					coolantLevel = 2
					brakeFluidLevel = 2
					tirePressure = 1
					tireWear = 1
					brakePadWear = 1
					brakeAbs = 1
					engineOilPressure = 2
					engineOilLevel = 2
					rpm = 0
					#temperature = 2
					#clutch_wear = 2
					lightHead = 2
					lightTail = 2
				}
				Alert {
					fuelLevel = 3
					washerFluidLevel = 1
					transmissionFluidLevel = 3
					coolantLevel = 3
					brakeFluidLevel = 3
					tirePressure = 2
					tireWear = 2
					brakePadWear = 2
					brakeAbs = 2
					engineOilPressure = 3
					engineOilLevel = 3
					rpm = 0
					#temperature = 3
					#clutch_wear = 3
					lightHead = 3
					lightTail = 3
				}
			}

The nested event names correspond to the names of the attributes published in the /pps/qnxcar/sensors/status object.

The following table shows the caution and alert status conditions for each of the attributes. Note that for the ABS system, only the individual wheel sensors can trigger caution status conditions. For attributes with Boolean data types, a false value will trigger a caution status condition.
Attribute Caution status condition Alert status condition
brakeAbsEnabled n/a n/a
brakeAbsFrontLeft false n/a
brakeAbsFrontRight false n/a
brakeAbsRearLeft false n/a
brakeAbsRearRight false n/a
brakeFluidLevel <=80% <=70%
brakePadWearFrontLeft <=40% <=20%
brakePadWearFrontRight <=40% <=20%
brakePadWearRearLeft <=40% <=20%
brakePadWearRearRight <=40% <=20%
cameraRearviewActive n/a n/a
coolantLevel <=80% <=70%
engineOilLevel <=85% <=75%
engineOilPressure <=85% <=75%
fuelLevel <=25% <=10%
lightHeadLeft false n/a
lightHeadRight false n/a
lightTailLeft false n/a
lightTailRight false n/a
rpm >=6250 >=7000
speed n/a n/a
tirePressureFrontLeft <=26 PSI, >=36 PSI <=24 PSI, >=38 PSI
tirePressureFrontRight <=26 PSI, >=36 PSI <=24 PSI, >=38 PSI
tirePressureRearLeft <=26 PSI, >=36 PSI <=24 PSI, >=38 PSI
tirePressureRearRight <=26 PSI, >=36 PSI <=24 PSI, >=38 PSI
tireWearFrontLeft <=30% <=20%
tireWearFrontRight <=30% <=20%
tireWearRearLeft <=30% <=20%
tireWearRearRight <=30% <=20%
transmissionClutchWear <=60% <=40%
transmissionFluidLevel <=80% <=70%
transmissionFluidTemperature >=215 (degrees F) >=240 (degrees F)
transmissionGear n/a n/a
washerFluidLevel <=20% <=10%

Callback functions

Since the VM plugin wraps the /pps/qnxcar/sensors/status object, the open() callback must subscribe to this PPS object so that the plugin will be notified of any changes published by the Virtual Mechanic app.

The close() callback closes the PPS object that the VM plugin subscribes to.

The read_event callback will return the event data from the VM plugin. This function will interpret any changes to the PPS data from the /pps/qnxcar/sensors/status object and will construct the appropriate event structure, returning this to the caller. If no data is available from PPS, this function returns false.

For more information, see "API Reference" in this guide.

Loading the plugin

The modules section of the HNM policy configuration file (policy.cfg) contains a subsection for the VM plugin, giving the location of the .so file to load:
VirtualMechanic {
			dll = /lib/dll/hmi-notification/event-source-vm.so