Difference between revisions of "Infotainment System - Technical Overview"

(UDP)
(UDP)
Line 77: Line 77:
 
var RT_PORT_OUTGOING = 8902;
 
var RT_PORT_OUTGOING = 8902;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
In the above example code snippet (from the config file), the outgoing data stream is configured to broadcast to the device at IP address 192.168.0.200 on port 8902 (default).
  
 
By default, four variables are shared from the infotainment system and fed back into the miniSim's shared memory:
 
By default, four variables are shared from the infotainment system and fed back into the miniSim's shared memory:

Revision as of 20:58, 29 May 2019

Architecture

The core of the Infotainment system is written in Node.js. It establishes an Express web server, then uses Socket.IO to manage connections to different control and/or display surfaces. Because display, audio and control surfaces are coded as web pages served up by the Express server, the Infotainment system creates a device-agnostic ecosystem, where any number of devices on any combination of platforms can participate (assuming they support a semi-modern browser).

In general, the Infotainment System can be logically brpagesoken down into three parts: the host script, the audio handler(s), and skins (display/input pages).

Host script

The host script operates as the beating heart of the Infotainment system. It manages the services for the display/input interface pages, listens to variable stream information from a miniSim, coordinates interface input, and broadcasts system state data back to the miniSim.
For it's real time interface to a miniSim, the Infotainment system leverages the Route Table to supply miniSim variable data streams (speed, position, ...) as well as write it's own back to the miniSim's shared memory.

Audio handler(s)

By default, a single audio page (infotainment_audio.htm) is included. This page can handle 3 channels of stereo playback:
  • Media playback
  • Alert (temporarily mutes media playback on play)
  • Notify
Media playback handles the general audio playback for the media store (defined in the infotainment_config.txt file) and "radio" media streams.
The alert channel is meant for driver alerts. Playback from this channel automatically lowers the volume of the media playback channel while alerts are in progress.
The notify channel is used primarily for audio cues within the vehicle. Its playback does not alter the other two channels' volume.

Skins


Individual web pages serve up visual interfaces/control surfaces, depending on the desired output. This includes (but is by no means limited to):
  • Standard OEM-like infotainment interfaces
  • Reconfigurable instrument cluster displays
  • General touch and/or voice interfaces
  • Head-up displays (HUDs)
  • "Alert" devices
By default, the Infotainment System includes an interface for an approximation of the Toyota Entune center stack system (main infotainment and researcher "mirror").

Input

Touch

The main user interface(s) can register touch position and button presses on any given configured skin. These interactions are logged into the AUX_Info_Cursor and AUX_Info_Button cells respectively.

By default, single touches are recorded automatically.

New buttons can be configured by adding HTML elements with a class of "button" (generally visually reactive buttons) or "buttonI" ("invisible" buttons) while having a unique button ID data element (ie, data-bid="4032").

UDP

The infotainment system has the ability to listen for a network stream on a user-defined UDP port(s) defined in the infotainment_config.txt file, and fed by the miniSim's route rable. By default, this is a single port on a given network interface, defined by the CAB_HOST_IP and RT_PORT_INCOMING variables.

// Local IP address of the infotainment server
var CAB_HOST_IP = '192.168.0.105';
 
...
 
var RT_PORT_INCOMING = 8901;

In the above example code snippet (from the config file), the incoming UDP control port is configured to listen on port 8901 (default) on the interface using the IP address 192.168.0.105.

Other

Although touch and network streams are the main input components of the core infotainment system, it can be extended to offer other inputs, such as gesture and /or voice control.

Please contact us if you have any questions about extending the infotainment system for other forms of input.


Output

UDP

The host script outputs a UDP stream to an IP and port defined in the infotainment_config.txt file in the root directory of the Infotainment System install.

var RT_STREAM_ENABLED = true;
var RT_HOST_IP = '192.168.0.200';
var RT_PORT_OUTGOING = 8902;

In the above example code snippet (from the config file), the outgoing data stream is configured to broadcast to the device at IP address 192.168.0.200 on port 8902 (default).

By default, four variables are shared from the infotainment system and fed back into the miniSim's shared memory:

Cell name Length, type Description Default value
AUX_Info_Screen 1 short The screen ID of the current active screen/menu of an attached page/skin 0
AUX_Info_Button 1 short The button ID of the last button pushed on an attached page/skin 0
AUX_Info_Cursor 2 shorts The relative X,Y position of a detected touch event on an attached page/skin. When no touch is detected, these two values default to -9999, -9999 -9999, -9999
AUX_MID_Screen 1 short If using an attached multi-information display (MID), this variable returns the given "screen ID" of the MID. -1

Note: For a miniSim to be able to read/record these cells, they must be defined in three places: the miniSim CEC definition file, the route table, and the miniSim collect file.