Configuration

Overview

The HNM relies on a policy configuration file to determine which event sources to manage and how to manage them, based on their priorities. The default configuration file is located here:

/etc/system/hmi-notification/policy.cfg

Configuration file format

The format is a simple text file that defines a hierarchy (tree) of different sections. Each line of the configuration file can hold at most 1024 characters (additional characters will be truncated from the line when the file is processed). Configuration items are listed within these sections as name-value pairs separated by an equals sign (=).

Each name of a section or subsection is followed by an open brace ({). Names themselves can contain any characters except { and space. A closing brace (}) ends each section or subsection. Any text between a number sign (#) and the end of the line is a comment.

Here's the default policy.cfg file:
hpm-cfg {
	modules {
		Generic {
			dll = /lib/dll/hmi-notification/event-source-generic.so
		}
		HandsFreePhone {
			dll = /lib/dll/hmi-notification/event-source-handsfree.so
			event-priorities {
				HFP_INITIALIZED = 0
				HFP_CONNECTED_IDLE = 0
				HFP_CALL_OUTGOING_DIALING = 1
				HFP_CALL_INCOMING = 1
			}
		}
		VirtualMechanic {
			dll = /lib/dll/hmi-notification/event-source-vm.so
			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
				}
			}
		}
	}

	window-types {
		Fullscreen {
			DisplayControl = 0	# Exclusive
			DefaultPriority = 0
		}
		Overlay {
			DisplayControl = 0	# Exclusive
			DefaultPriority = 0
		}
		Notification {
			DisplayControl = 1	# Semi-Exclusive with 1 display slots.
			DefaultPriority = 0
		}
		Growl {
			DisplayControl = -1	# Shared
			DefaultPriority = 0
		}
	}
}

Sections

Although you can set up your own sections, the HNM relies on the following predefined sections in the configuration file:
modules
Informs the HNM about any pluggable event-source modules that need to be loaded by the system. The dll child item specifies the path of the shared object (.so file) for the event-source plugin. For more information about event-source plugins, see "Plugins" in this guide.
window-types
Specifies how notices should appear on the display.

Modules

The modules section contains the names of the event-source plugins to be loaded (e.g., VirtualMechanic). Each plugin can contain these subsections:

dll
Path to the .so file (e.g., dll = /lib/dll/hmi-notification/event-source-vm.so).
event-priorities
Priority mappings specified via a list of name-value pairs (e.g., fuelLevel = 2).
Note: The HNM uses the names in the event-priorities section to form the event names that appear, for example, in the /pps/services/hmi-notification/Status object:
@Status
display:json:[{"name":"Home","type":"Modal"},
{"name":"Alert","type":"Notification"}]

Window types

The window-types section lists the available window types, along with their DisplayControl and DefaultPriority values. The window types are as follows:
  • Fullscreen—an application's fullscreen view associated with an event. Although other window types may require exclusive access to the display, fullscreen windows are unique in that they can't be closed. They can be replaced only by another fullscreen view.
  • Growl—transient notification types. These have nonexclusive display semantics, so any number of growl notifications can be displayed alongside exclusive or semi-exclusive window types.
  • Notification—these represent nontransient graphical hints (e.g., graphical status bar). Notifications have semi-exclusive display semantics, so they can typically share the display with other exclusive window types (e.g., fullscreen or overlay windows). But note that there may be a limit to the number of nontransient notifications that can be displayed at any given time.
  • Overlay—can have exclusive or nonexclusive access to the display. Exclusive overlays are essentially like fullscreen windows except that overlay windows can be closed. When an overlay is closed, the views that were previously obscured should be redisplayed.

DisplayControl values

For each window type, the DisplayControl item specifies how the window will share the display:
Value Flag Description
0 HNM_DISPLAY_EXCLUSIVE Window type can't share the display with any other exclusive window type.
1 HNM_DISPLAY_SEMI_EXCLUSIVE The value 1 indicates the number of display slots. In this case, the window type can share the display with an exclusive display and with one or more semi-exclusive displays.
-1 HNM_DISPLAY_SHARED Window type can share the display regardless of what is currently being displayed.