constructor(frontendBuilderName: String, implementationModule: ModuleReference, subPackageName: String? = null, creationPolicy: FrontendCreationPolicy = FrontendCreationPolicy.CREATE_AFTER_STARTUP, extensions: List<FrontendExtensionConfig> = emptyList(), availablePanelTypes: PanelTypesConfig? = null, dependencies: IviServiceDependencies = IviServiceDependencies())



The name of the frontend builder class.

The frontend builder name must be formatted in PascalCase and must end with the FrontendBuilder suffix. The FrontendBuilder suffix is mandatory to allow the reference to the frontend builder class to be easier to find in the code base.

The frontend builder name needs to match a class with the same name that implements the com.tomtom.ivi.platform.frontend.api.common.frontend.FrontendBuilder class.


The module that contains the class that implements the com.tomtom.ivi.platform.frontend.api.common.frontend.FrontendBuilder class. See frontendBuilderName for details.

The package name of the class is obtained from this ModuleReference. If the class resides in a sub package within this module, the sub package can be provided through subPackageName. This subPackageName is appended to the package name of the module, with a period in between.


Optional sub package. If not null, this value is appended to the ModuleReference.packageName of the implementationModule property with a period in between.


The creation policy of the frontend. Determines when the frontend should be created relative to the lifecycle of the IVI system.


The frontend extensions configuration. The configured frontend extensions will be set to the frontendBuilderName class instance.


A reference to a runtime set of panels that are available to the frontend. By default, all of the panel types offered by the TomTom Digital Cockpit platform are included.

When introducing a new panel type, frontends using it must have the type specified here for the frontend to be able to use it, e.g., by passing a reference to val EXPANDED_PANEL_TYPES = PLATFORM_PANEL_TYPES + CustomPanel::class. This information is also used by the system UI to determine whether or not it can support the frontends it's asked to present panels for.


IVI service dependencies of the frontend implementation.

A frontend implementation can require other IVI service interfaces to be registered. This allows misconfiguration to be detected at build time.