The QNX CAR platform includes the Elektrobit (EB) street director navigation software. Both the HTML5 and Qt5 HMI versions include a navigation front end that accesses the EB navigation engine through the platform's native navigation service.

The native navigation service can communicate with any navigation engine running on the system. This design allows you to install and use software from multiple vendors and reconfigure your system to use a particular navigation engine without impacting your HMI apps. For more information, see "Navigation Engine" in the System Services Reference.

The navigation subsystem design for the two HMI versions is shown this diagram:

Figure 1. Architecture of navigation subsystems in HTML5 and Qt5 HMIs

The native navigation service publishes information to a PPS object, making details about the route available to other applications. For example, trip information can be made available to the weather application, which can then display the weather forecast for the estimated arrival time at the destination. The car.navigation plugin provides HTML5 applications with navigation status, which it reads from PPS. For Qt5 applications, the QtQnxCar2 and QPPS libraries wrap the PPS objects and provides functions for reading navigation information.

When the user directs the navigation system to a Point of Interest (POI) or asks to search a city, province, state, or country for a particular POI, the HMI writes to the navigation control PPS object by using either the JavaScript plugin or the Qt-supporting libraries, depending on which HMI version is in use.

When the native navigation service reads a request from the control PPS object, it forwards the request to the EB SDK. Once the EB SDK returns the results, the native navigation service updates the same PPS object to notify the sender of the request about the request's completion. The service also writes the results to a database, so subscribers that receive the notification can then read the results from the database. In the HTML5 HMI, subscribers access the database through the SQL plugin, which runs within the browser engine. In the Qt5 HMI, subscribers access the database through the QtQnxCar2 library, which runs within the Qt runtime environment.