diff options
Diffstat (limited to 'agl-specs-v1.0/00-doorsNG-original.md')
-rw-r--r-- | agl-specs-v1.0/00-doorsNG-original.md | 7753 |
1 files changed, 0 insertions, 7753 deletions
diff --git a/agl-specs-v1.0/00-doorsNG-original.md b/agl-specs-v1.0/00-doorsNG-original.md deleted file mode 100644 index d41635d..0000000 --- a/agl-specs-v1.0/00-doorsNG-original.md +++ /dev/null @@ -1,7753 +0,0 @@ ---- -# Master Header for Jkyll ---- - -> ![](media/picture8.jpeg)![](media/picture9.jpeg)Version 1.0 -> -> Automotive Grade Linux -> -> Requirements Specification -> -> May 28, 2015 -> -> www.automotivelinux.org -> -> www.linuxfoundation.org -> -> ![](media/picture10.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Table of Contents -> -> [***1***](#5)*** Automotive Grade Linux ...............................................................................................*** -> ***5*** -> -> [**1.1**](#5)** Overview ............................................................................................................................** -> **5** -> -> [**1.2**](#6)** Document Scope.................................................................................................................** -> **6** -> -> [**1.3**](#6)** Glossary of Terms ..............................................................................................................** -> **6** -> -> [***2***](#7)*** Architecture ..................................................................................................................*** -> ***7*** -> -> [***3***](#8)*** App/HMI Layer .............................................................................................................*** -> ***8*** -> -> [**3.1**](#9)** Home Screen ......................................................................................................................** -> **9** -> -> [3.1.1](#9) Layout......................................................................................................................................... -> 9 -> -> [3.1.2](#10) System UI Parts........................................................................................................................ -> 10 -> -> [3.1.3](#10) Application Management .......................................................................................................... -> 10 -> -> [3.1.4](#10) Application Switch.................................................................................................................... -> 10 -> -> [3.1.5](#10) Application History ................................................................................................................... -> 10 -> -> [3.1.6](#12) Application Stack ...................................................................................................................... -> 12 -> -> [3.1.7](#14) Role of Home Screen................................................................................................................ -> 14 -> -> [3.1.8](#16) Requirements ........................................................................................................................... -> 16 -> -> [***4***](#20)*** Application Framework Layer .....................................................................................*** -> ***20*** -> -> [**4.1**](#20)** AGL Application Framework .............................................................................................** -> **20** -> -> [4.1.1](#21) Application Manager................................................................................................................. -> 21 -> -> [4.1.2](#21) Window Manager ..................................................................................................................... -> 21 -> -> [4.1.3](#27) Policy Manager ......................................................................................................................... -> 27 -> -> [4.1.4](#59) Sound Manager ........................................................................................................................ -> 59 -> -> [4.1.5](#63) Input Manager .......................................................................................................................... -> 63 -> -> [4.1.6](#65) User Manager ........................................................................................................................... -> 65 -> -> [**4.2**](#71)** Web HMI ..........................................................................................................................** -> **71** -> -> [4.2.1](#71) Web API ................................................................................................................................... -> 71 -> -> [4.2.2](#75) Web Runtime............................................................................................................................ -> 75 -> -> [**4.3**](#76)** Native HMI .......................................................................................................................** -> **76** -> -> [4.3.1](#76) Native App Runtime.................................................................................................................. -> 76 -> -> [4.3.2](#77) Native Application Framework ................................................................................................. -> 77 -> -> [***5***](#77)*** Services Layer ............................................................................................................*** -> ***77*** -> -> [**5.1**](#78)** Platform Services .............................................................................................................** -> **78** -> -> [5.1.1](#78) Bluetooth ................................................................................................................................. -> 78 -> -> [5.1.2](#92) Error Management.................................................................................................................... -> 92 -> -> [5.1.3](#98) Graphics ................................................................................................................................... -> 98 -> -> [5.1.4](#98) Location Services...................................................................................................................... -> 98 -> -> Page 2 of 159 -> -> ![](media/picture46.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> [5.1.5](#100) Health Monitoring .................................................................................................................. -> 100 -> -> [5.1.6](#100) IPC ......................................................................................................................................... -> 100 -> -> [5.1.7](#100) Lifecycle Management............................................................................................................ -> 100 -> -> [5.1.8](#100) Network Services................................................................................................................... -> 100 -> -> [5.1.9](#100) Persistent Storage ................................................................................................................. -> 100 -> -> [5.1.10](#100) Power Management ............................................................................................................. -> 100 -> -> [5.1.11](#102) Resource Management......................................................................................................... -> 102 -> -> [5.1.12](#102) Telephony Services .............................................................................................................. -> 102 -> -> [5.1.13](#103) Wi-Fi .................................................................................................................................... -> 103 -> -> [5.1.14](#110) Window System................................................................................................................... -> 110 -> -> [**5.2**](#111)** Automotive Services ......................................................................................................** -> **111** -> -> [5.2.1](#111) Audio Services........................................................................................................................ -> 111 -> -> [5.2.2](#111) Camera Services..................................................................................................................... -> 111 -> -> [5.2.3](#111) Configuration Services ........................................................................................................... -> 111 -> -> [5.2.4](#111) Diagnostic Services ................................................................................................................ -> 111 -> -> [5.2.5](#111) Multimedia Services ............................................................................................................... -> 111 -> -> [5.2.6](#116) Navigation Services................................................................................................................ -> 116 -> -> [5.2.7](#117) PIM......................................................................................................................................... -> 117 -> -> [5.2.8](#117) Smartphone Link .................................................................................................................... -> 117 -> -> [5.2.9](#125) Speech Services ..................................................................................................................... -> 125 -> -> [5.2.10](#125) Tuner Services ..................................................................................................................... -> 125 -> -> [5.2.11](#132) Vehicle Bus / Vehicle Info Control........................................................................................ -> 132 -> -> [5.2.12](#141) Telematics Services.............................................................................................................. -> 141 -> -> [5.2.13](#142) Window System................................................................................................................... -> 142 -> -> [***6***](#143)*** Security Services......................................................................................................*** -> ***143*** -> -> [**6.1**](#143)** Access Control ...............................................................................................................** -> **143** -> -> [6.1.1](#144) Requirements ......................................................................................................................... -> 144 -> -> [***7***](#144)*** Operating System Layer ..........................................................................................*** -> ***144*** -> -> [**7.1**](#144)** Kernel ............................................................................................................................** -> **144** -> -> [7.1.1](#144) Linux Kernel ........................................................................................................................... -> 144 -> -> [**7.2**](#145)** Boot Loader ...................................................................................................................** -> **145** -> -> [**7.3**](#145)** Hypervisor .....................................................................................................................** -> **145** -> -> [7.3.1](#145) Requirements ......................................................................................................................... -> 145 -> -> [**7.4**](#145)** Operating System ..........................................................................................................** -> **145** -> -> [7.4.1](#145) File Systems ........................................................................................................................... -> 145 -> -> [7.4.2](#150) Resource Control ................................................................................................................... -> 150 -> -> [7.4.3](#153) Startup/Shutdown Control .................................................................................................... -> 153 -> -> [7.4.4](#155) Database ................................................................................................................................ -> 155 -> -> [7.4.5](#156) System Update....................................................................................................................... -> 156 -> -> [**7.5**](#157)** Device Drivers ................................................................................................................** -> **157** -> -> Page 3 of 159 -> -> ![](media/picture87.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> [7.5.1](#157) Peripherals ............................................................................................................................. -> 157 -> -> [7.5.2](#158) Graphics Drivers..................................................................................................................... -> 158 -> -> [7.5.3](#158) Video Drivers.......................................................................................................................... -> 158 -> -> [7.5.4](#158) Audio Codecs ......................................................................................................................... -> 158 -> -> [7.5.5](#158) Automotive Devices ............................................................................................................... -> 158 -> -> [***8***](#159)*** Notices.....................................................................................................................*** -> ***159*** -> -> Page 4 of 159 -> -> ![](media/picture94.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **1 Automotive Grade Linux** -> -> 1.1 Overview -> -> Automotive Grade Linux (AGL) is a Linux Foundation Workgroup dedicated to creating open -> -> source software solutions for automotive applications. Although the initial target for AGL is In- -> -> Vehicle-Infotainment (IVI) systems, additional use cases such as instrument clusters and and -> -> telematics systems will eventually be supported. AGL has participants from the Automotive, -> -> Communications, and Semiconductor Industries and welcomes contributions from individual -> -> developers. -> -> By leveraging the over \$10B of investment made in the Linux kernel and other open source -> -> software projects, the AGL Workgroup: -> -> · -> Enables rapid software innovation for automotive suppliers to keep up with the demand -> -> from consumers for better IVI experiences -> -> · -> Utilizes the talents of thousands of open source software developers dedicated to -> -> maintaining the core software in areas like the Linux kernel, networking, and -> -> connectivity, used in systems across numerous industries -> -> The goals of the Automotive Grade Linux Workgroup are to provide: -> -> · -> An automotive-focused core Linux operating system stack that meets common and -> -> shared requirements of the automotive ecosystem with a broad community of -> -> support that includes individual developers, academic organizations and companies. -> -> · -> A transparent, collaborative, and open environment for Automotive OEMs, Tier One -> -> suppliers, and their semiconductor and software vendors to create amazing in-vehicle -> -> software. -> -> · -> A collective voice for working with other open source projects and developing new open -> -> source solutions. -> -> · -> An embedded Linux distribution that enables rapid prototyping for developers new to -> -> Linux or teams with prior open source experience -> -> This results in faster time to market by jump-starting product teams with reference applications -> -> running on multiple hardware platforms. -> -> Page 5 of 159 - - > **Term** > **Definition** - ------------ ------------------------------------------ - > A2DP > Advanced Audio Distribution Profile - > AGL > Automotive Grade Linux - > AVRCP > Audio Video Remote Control Profile - > FS > File System - > GPS > Global Positioning System - > GPU > Graphical Processing Unit - -> ![](media/picture95.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 1.2 Document Scope -> -> The scope of this document is to define the architecture of the Automotive Grade Linux software -> -> platform. The requirements are broken up into an overview of the Architecture and a description -> -> of each of the layers in the architecture followed by the requirements for each module in the -> -> various layers. The Architecture Diagram and the layout of the specification take into -> -> consideration all of the components that would be needed for an IVI system; however the are -> -> missing requirements for individual modules. As the spec continues to evolve those sections will -> -> continue to be filled in. -> -> The main goal of this document is to define the core software platform from which applications -> -> can be built. As such, this document does not define application requirements except in a single -> -> case (Home Screen). Application requirements will be developed by various projects that use the -> -> AGL platform. Those application requirements can be used to drive new or revised -> -> requirements into the platform. -> -> At this time there is no plan to use this specification to create a compliance or certification -> -> program. The specification is used as blueprint to guide the overall work of AGL and to derive -> -> work packages for companies and individuals to complete in order to attain the goals of the AGL -> -> Workgroup. -> -> 1.3 Glossary of Terms - - > HFP > Hands Free Profile - -------- ------------------------------------- - > IBOC > In-Band On Channel - > LTSI > Long Term Support Initiative - > NTP > Network Time Protocol - > OEM > Original Equipment Manufacturer - > OS > Operating System - > OSS > Open Source Software - > SDL > Smart Device Link - > STT > Speech to Text - > TTS > Text to Speech - -> ![](media/picture96.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **2 Architecture** -> -> The Automotive Grade Linux Software Architecture diagram is below. The architecture consists -> -> of five layers. The App/HMI layer contains applications with their associated business logic and -> -> HMI. Generally applications are out of scope for this document since they are product specific -> -> for the OEM that is developing a system based on AGL. -> -> The Application Framework layer provides the APIs for creating both managing and running -> -> applications on an AGL system. The Services layer contains user space services that all -> -> applications can access. The Operating System (OS) layer provides the Linux kernel and device -> -> drivers along with standard OS utilities. -> -> Page 7 of 159 -> -> ![](media/picture97.jpeg)![](media/picture98.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **3 App/HMI Layer** -> -> Applications may use a web based framework or a native framework. A system may include -> -> applications that use different frameworks. Coordination of applications between frameworks is -> -> performed by the AGL App Framework. The diagram represents possible applications that could -> -> appear in a given system, but is not all inclusive. Reference applications may be provided by AGL -> -> Page 8 of 159 -> -> ![](media/picture99.jpeg)![](media/picture100.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> to demonstrate the capabilities of the platform. -> -> 3.1 Home Screen -> -> Home Screen provides the Home User Interface (Home UI) of the system which meets the -> -> following requirements: -> -> · Rich User Experience (Rich UX) -> -> · Driver Distraction mitigation -> -> · Variations support -> -> Rich UX covers requirements such as usability and user satisfaction. Driver Distraction mitigation -> -> covers requirements on display control and user operation behavior while vehicle is in motion to -> -> minimize driver distraction. Variations support covers requirements to support customization of -> -> design and behavior of the system to meet the different needs of vehicle type, destination and -> -> grade. -> -> **3.1.1 Layout** -> -> The following use cases are considered for Layout. -> -> · -> Home Screen developer changes the Home UI by using a customizable layout definition. -> -> Page 9 of 159 -> -> ![](media/picture101.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **3.1.2 System UI Parts** -> -> The use case assumed about System UI Parts is as follows. -> -> · -> An application or System uses status bar and on-screen in order to notify information to -> -> a user. -> -> · -> User uses the system setting UI in order to change settings. -> -> · User uses software keyboard in order to input characters. -> -> **3.1.3 Application Management** -> -> The use case assumed about Application Management is as follows. -> -> · -> A user downloads and installs or updates the delivery application from application store. -> -> · A user uninstalls the delivery application. -> -> · -> A user launches the installed delivery application or the pre-installed application. -> -> · Also a user terminates those applications. -> -> **3.1.4 Application Switch** -> -> The use case assumed about Application Switch is as follows. -> -> · -> User switches application via application history or application stack. -> -> · -> The system switches application according to Driving Mode status. -> -> **3.1.5 Application History** -> -> Application switching by application history is assumed as follows. -> -> · -> The system records the order of the applications in the order in which the application is -> -> displayed. -> -> · -> The order of application that is recorded is updated each time the display of the -> -> application is switched. -> -> · -> Screen of the application is displayed in the order in which they are recorded in the -> -> history at the time of switching applications. -> -> Page 10 of 159 -> -> ![](media/picture102.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> ‑ Specification of operation -> -> - User runs a swipe from the edge of the application screen area. -> -> ‑ Specification of action -> -> - The order of the screen is managed order management list (application history). -> -> - List order update opportunity(Update has determined a display of the application) -> -> - Application starts or stops. -> -> - Allowed to stand between the screen N seconds after the swipe. -> -> ‑"N seconds"‑User defines the value of any. -> -> - User to operate the screen after you swipe. -> -> ‑"operation"‑Screen tap. Menu display. Other. -> -> Figure 5‑2 represents a sample Home Screen depicting the above mentioned use cases. -> -> Page 11 of 159 -> -> ![](media/picture103.jpeg)![](media/picture104.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **3.1.6 Application Stack** -> -> Application switching by application stack is assumed as follows. -> -> · -> The user specifies the type of any order. The system records the order of the application -> -> to the rule as of the specified type. -> -> · Examples of the types of any order -> -> · Application start-up order -> -> · -> Screen of the application is displayed in the order in which they are recorded in the stack -> -> Page 12 of 159 -> -> ![](media/picture105.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> when switching applications. -> -> ‑ Specification of operation -> -> · -> User runs a swipe from the edge of the application screen area. -> -> ‑ Specification of action -> -> · -> The order of the screen is managed order management list (application stack). -> -> · -> List order update opportunity.(Application start-up order as an example) -> -> · -> Application that started at the end of the list when the application is started is added. -> -> · -> Application that has stopped from the list when the application is stopped will be -> -> deleted. -> -> Figure 5-3 represents the switching example depicting the application of the above switching. -> -> Page 13 of 159 - - -------------------------------------------------------------------------------------- - > **No** > **Use Case** > **Role** > **Description** - ---------- ----------------- --------------- ----------------------------------------- - > 1-1 > Layout > GUI Layout > Function to define a customizable - > > - > definition > GUI Layout definition. - -------------------------------------------------------------------------------------- - -> ![](media/picture106.jpeg)![](media/picture107.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **3.1.7 Role of Home Screen** -> -> Table 5-1 describes the role of the Home Screen to satisfy the purpose and use cases -> -> Page 14 of 159 - - ---------------------------------------------------------------------------------------------------- - > 1-2 > Change Layout > Function to apply the customized - > - > GUI layout definition. - ------- --------------------- ------------------------ --------------------------------------------- - > 2-1 > System UI Parts > Status Bar > Function to display the - > - > information from application or - > - > system. - > - > Function to quickly access and set - > - > certain system settings. - - > 2-2 > On-screen > Function to display a popup - > - > window such as alert messages. - - > 2-3 > System Setting > Function to display system - > - > settings menu regarding GUI, - > - > such as locale and network. - - > 2-4 > Software > Function to display software - > > - > Keyboard > keyboard. - - > 3-1 > Application > Application > Function to download - > > > - > Management > Management > applications from application - > - > store. Function to install, uninstall - > - > and update the downloaded - > - > applications. - - > 3-2 > Application > Function to launch/terminate - > > - > Launcher > applications. - - > 4-1 > Application > Application List > Function to switch applications by - > > - > Switch > installed application list. - - > 4-2 > Application History > Function which switches - > - > application in order by - > - > applications history. - - > 4-3 > Application Stack > Function to switch application in - > - > any order. - ---------------------------------------------------------------------------------------------------- - -> ![](media/picture108.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **Table 5-2: Relevance of the Role and Purpose** -> -> Page 15 of 159 - - ----------------------------------------------------------------------------------------------- - > **No.** > **Role** > **Rich UX** > **Driver** > **Variations** - > > - > **Distraction** > **support** - > - > **mitigation** - ----------- --------------------------- ---------------- ------------------- ------------------ - > 1-1 > GUI Layout definition > ‑ > ‑ > ‑ - - > 1-2 > Change Layout > ‑ > ‑ > ‑ - - > 2-1 > Status Bar > ‑ > ‑ - - > 2-2 > On-screen > ‑ > ‑ - - > 2-3 > System Setting > ‑ > ‑ - - > 2-4 > Software Keyboard > ‑ > ‑ - - > 3-1 > Application Management > ‑ > ‑ - - > 3-2 > Application Launcher > ‑ > ‑ - - > 4-1 > Application List > ‑ > ‑ - - > 4-2 > Application History > ‑ > ‑ - - > 4-3 > Application Stack > ‑ > ‑ - ----------------------------------------------------------------------------------------------- - -> ![](media/picture109.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **3.1.8 Requirements** -> -> **3.1.8.1 Layout** -> -> Home Screen must provide a mechanism for customizable GUI layout definition by each vehicle -> -> type, each destination and each grade. -> -> Home Screen must provide a mechanism for a customizable GUI layout definition for different -> -> vehicle type, destination and grade. -> -> GUI layout definitioncan be definedsuch as the following items: -> -> (In addition, items that can be defined is not limited to the following.) -> -> · screen resource (Display, Layer Type, Area) -> -> Page 16 of 159 -> -> ![](media/picture110.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · sound resource (Zone, Sound Type) -> -> · input resource (Device, Event Type) -> -> · UI Component to be used in the entire system -> -> · transition effect (Animation effect) -> -> · Background image -> -> Home Screen must provide a mechanism to apply customized GUI layout definition. -> -> **3.1.8.2 System UI Parts** -> -> Home Screen must provide a mechanism to display two or more information simultaneously to -> -> the status notification area. -> -> Home Screen must provide a mechanism to displaying status to status notification area. -> -> · Current Time: Displaying clock capability -> -> · -> Icons of Status: Displaying icons for notify information from applications -> -> · -> Status Message: Displaying text for notify information from applications -> -> · -> Communication Status: Status of mobile communication and wireless communications -> -> (Wi-Fi, Bluetooth, etc.) -> -> Home screen must provide an interface to retrieve information from application for notification. -> -> Home Screen must provide a mechanism to show popup window into on-screen window. -> -> Home Screen must provide GUI method to hide on-screen window by user operation. -> -> Home Screen must provide a mechanism to hide on-screen window within a specified duration. -> -> Home Screen must provide an interface for applications to request to show popups. -> -> Home Screen must provide an interface for applications to cancel the previously requested -> -> popup. -> -> Page 17 of 159 -> -> ![](media/picture111.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Home Screen must provide a mechanism to show text information, draw images and show -> -> software switch like button in the on-screen window. -> -> Home Screen must provide a mechanism to specify attributes such as position and size of On- -> -> screen window. -> -> Home Screen must support a mechanism to specify other window display effect when the On- -> -> screen window is displayed. (e.g. tone down) -> -> Home Screen must provide system setting menu regarding GUI, such as locale and network. -> -> Home Screen must provide a mechanism to change current date and time setting. -> -> Home Screen must provide a mechanism to change timezone setting. -> -> · -> The platform must set up the date, time and timezone according to a current position -> -> automatically. -> -> · -> Home Screen must provide a mechanism to set up turning on and off of the automatic -> -> date/time/timezone setup. -> -> Home Screen must provide a mechanism to change language setting. -> -> Home Screen must provide a mechanism to change wireless communications (Wi-Fi, Bluetooth, -> -> etc.) setting. -> -> · Enable/Disable -> -> · Connect/Disconnect -> -> · Search the devices -> -> · Display the list of available and/or registered devices -> -> Home Screen must provide a mechanism to change mobile communication setting. -> -> · Enable/Disable -> -> Page 18 of 159 -> -> ![](media/picture112.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · A setup and change of various attributes -> -> · Display the list of registered devices and select device -> -> HomeScreen must support to change the appearance of a screen to a user's liking. -> -> These are as follows. -> -> · Tone of a screen. -> -> · Appearance of a window frame. -> -> · Animation effect when screen transition was occurred. -> -> Home Screen must support a mechanism to set or change master audio volume. -> -> Home Screen must support a mechanism to set or change display brightness. -> -> Home Screen must provide a mechanism to show software keyboard. -> -> Home Screen must provide a mechanism to apply default settings (e.g. theme, local, wallpaper) -> -> to a new user, when a user is added by the User Manager. -> -> **3.1.8.3 Application Management** -> -> Home Screen must provide a mechanism to manage downloaded application package. -> -> · Display downloaded application list from application store. -> -> · Download the application -> -> · Install the downloaded application -> -> · Uninstall the downloaded application -> -> · Update the downloaded application -> -> Home Screen must provide a mechanism to launch the application. -> -> Home Screen must provide a mechanism to terminate the application. -> -> Page 19 of 159 -> -> ![](media/picture113.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **3.1.8.4 Application Switch** -> -> Home Screen must provide a mechanism to show the list of installed applications. -> -> Examples of assumed application list -> -> · list of application name -> -> · list of application’s icon -> -> · list of live thumbnail for all the running applications -> -> Home Screen must provide a mechanism for switching display application in order by application -> -> history. -> -> Home Screen must provide a mechanism for the application stack in any order. For example, -> -> such as launch order or display order. -> -> Home Screen must provide a mechanism for the system to switch applications. -> -> For example, when Driving Mode changes, system must be able to switch application based on -> -> policy. -> -> **4 Application Framework Layer** -> -> The Application Framework layer provides the methods needed to create software applications -> -> and their user interfaces. The platform can support multiple application frameworks any of -> -> which may be built into an SDK or product build. The application framework contains any code -> -> specifically written for that framework as well the bindings to the Services and Operating -> -> Systems layers that the application framework provides for its applications. -> -> 4.1 AGL Application Framework -> -> The AGL Application Framework provides basic services to all applications regardless of the -> -> framework they are implemented in so that there is a standard method providing the services. -> -> Page 20 of 159 -> -> ![](media/picture114.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **4.1.1 Application Manager** -> -> Application Manager describes requirements for AGL application lifecycle function. Application -> -> lifecycle contains application installation/removal and launch/hide/resume/kill. -> -> **4.1.1.1 Requirements** -> -> AGL System must support application lifecycle (install/uninstall, launch/kill, suspend/resume) based on -> -> appid/pid via launcher. -> -> AGL System must support a database to store application metadata (appid, exec path etc.). -> -> AGL System must provide an interface to get a list of installed applications. -> -> AGL System must provide an interface to get the state of an application. -> -> AGL System must provide application privilege control. -> -> **4.1.2 Window Manager** -> -> A window system is a software component that facilitates an implementation of graphical user interface. A -> -> window system is responsible for managing display devices, Graphics Processing Units (GPUs), input -> -> devices, and graphics memory. A window system works with the software component named window -> -> manager that is responsible for a layout management of windows, and a routing of user interactions. -> -> A window manager is as software component that is responsible for a layout management of -> -> windows. -> -> Window manager of automotive middleware layer makes up for traditional window management -> -> system to be satisfied IVI’s complex requirements, typically requested from Policy Manager. -> -> Also, AGL aims to provide well-portability among various hardware platforms. -> -> Page 21 of 159 - - -------------------------------------------------------------------------------------------------------- - > **No.** > **Role** > **Description** - ----------- ----------------------------- -------------------------------------------------------------- - > 1 > Window drawing > Provide capability to draw a window to any place - > - > and any size and any scale. - > - > Also provide capability to change visibility of the - > - > window. - - > 2 > Overlay of multiple > Provide capability to overlay two or more windows - > > - > windows > with any z-order. - > - > Also provide capability to use hardware layer - > - > efficiently. - - > 3 > Visual effect > Provide capability to adapt visual effect as below. - > - > · Animation effect to change visibility - > - > · Animation effect to transit between two or - > - > more windows - > - > · Visual effect for a window, such as gray-out - > - > and transparent. - - > 4 > Frame rate control > Provide capability to control dynamic frame rate - > - > change. This is useful if system resource was - > - > shortage. - - > 5 > Multiple hardware layer > Provide capability to use hardware layer efficiently - > > - > support > if hardware supports two or more hardware layers. - -------------------------------------------------------------------------------------------------------- - -> ![](media/picture115.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **4.1.2.1 Use** **Case** -> -> Please refer “screen resource control” of Policy Manger section. -> -> **4.1.2.2 Role** -> -> Table 7-148 describes the role of window manager to be satisfied above purpose and use -> -> cases. -> -> Page 22 of 159 - - ---------------------------------------------------------------------------------------------- - > 6 > Reduced dependency of > Provide well-defined interface to reduce - > > - > hardware > dependency of hardware. Well-defined interface - > - > also makes it possible to increase the effect of - > - > portability and development cost. - ----- --------------------------- ------------------------------------------------------------ - > 7 > Multi window / multi > Support multi window management and multi - > > - > display > display. - - > 8 > Compatibility > From the compatibility point of view, AGL should - > - > use public API, and shall not rely on hardware - > - > specific API. - ---------------------------------------------------------------------------------------------- - -> ![](media/picture116.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **4.1.2.3 Requirements** -> -> 4.1.2.3.1 Window Drawing -> -> System must provide a mechanism to manage surfaces, such as create, delete, make visible and -> -> make invisible. -> -> System must provide a mechanism to create and delete surface. -> -> When surface is created or deleted, system must notify status change to GUI resource. -> -> This notification mechanism makes possible to assign surface to proper area by GUI resource. -> -> System must provide a mechanism to change visibility per each surface. -> -> And, provide an interface to change visibility. -> -> All the surfaces must be set to invisible for initial state. -> -> Surface will be visible only if GUI resource issues to change visibility. -> -> System must provide a mechanism to move surface’s area. If area size was different between -> -> previous area and new one, then system must support to fit into new area by VIC.4.1.4. -> -> *System must provide a mechanism to fit surface into area. Because, size of area may differe*nt -> -> Page 23 of 159 -> -> ![](media/picture117.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> from size of surface. -> -> If resize was happened, system must notify to surface’s owner application. -> -> If size of surface and size of area was different, system must provide a mechanism to fit surface -> -> into area by squeeze. -> -> If size of surface and size of area was different, system must provide a mechanism to fit surface -> -> into area by using combination of scaling and trimming function. -> -> That means, system must provide a mechanism to fit surface into area keeping original aspect -> -> ratio. This makes it possible to fit by “pan & scan”. -> -> If size of surface and size of area was different, system must provide a mechanism to fit surface -> -> into area by using combination of scaling and background color. -> -> That means, system must provide a mechanism to fit surface into area keeping original aspect -> -> ratio. System also provides a mechanism to fill background color into redundant pixels. This -> -> mechanism makes it possible to do “letterbox” method. -> -> 4.1.2.3.2 Overlay of Multiple Windows -> -> System must provide a mechanism to create and delete a layer. -> -> Layer must have a concept of z-order. That means, display order for each layer is decided by -> -> their z-order attribute. -> -> Z-order attribute is fixed value. So, if application wants to change display order of surfaces, -> -> then, attached layer must be changed. -> -> System must provide a mechanism to create and delete “area” to display surface. -> -> Area is a concept which defines where to display in specific layer. -> -> System must provide a mechanism to attach surface to any layer. -> -> Also, system must be able to change attached layer. -> -> And, provide an interface to attach and change. -> -> Page 24 of 159 -> -> ![](media/picture118.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System must provide a mechanism to assign surface to any area in a layer. -> -> And, provide an interface to assign surface to any area. -> -> System must provide a mechanism to change visibility per each layer. -> -> That means all the surfaces belonging to same layer will be changed visible or invisible at the -> -> same time. -> -> And, provide an interface to change visibility per layer. -> -> Initial state must be set to invisible. -> -> System must provide a mechanism to enable superimposed display based on z-order of each -> -> layer, and disposition of surfaces. -> -> 4.1.2.3.3 Visual Affect -> -> System must provide a mechanism to apply animation effect when visibility change was -> -> happened. -> -> Per each animation, system must provide a mechanism to apply below attributes. -> -> - Duration -> -> Animation type -> -> System must provide typical animation effects, such as slide-in, slide-out, zoom-in and zoom- -> -> out. -> -> Also, system must provide a mechanism to add, delete and change animation effect easily by -> -> plug-in architecture. -> -> System must provide a mechanism to apply animation effect when move surface was happened. -> -> Per each animation, system must provide a mechanism to apply below attributes. -> -> · Duration -> -> Animation type -> -> System must provide typical animation effects, such as slide-in, slide-out, zoom-in and zoom- -> -> Page 25 of 159 -> -> ![](media/picture119.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> out. -> -> Also, system must provide a mechanism to add, delete and change animation effect easily by -> -> plug-in architecture. -> -> System must provide a mechanism to make effect to surface. -> -> And, provide an interface to set effect type from application and other software components. -> -> System must provide a mechanism to make specific surface to gray-out. -> -> System must provide a mechanism to make specific surface to low brightness -> -> System must provide a mechanism to add, delete and change effect for surface easily by plug-in -> -> architecture. -> -> 4.1.2.3.4 Frame Rate Control -> -> System must provide a mechanism to reduce frame rate independent from refresh interval of -> -> application. -> -> System also provides a mechanism to set frame rate as 0fps, independent from refresh interval -> -> of application. -> -> This function is useful to keep whole system quality even if high load status, such as live -> -> thumbnail and moving surface. -> -> 4.1.2.3.5 Multiple Hardware Layer Support -> -> If hardware supports two or more hardware layers, system must provide a mechanism to use -> -> hardware layers efficiently. -> -> · -> Never use software overlay when superimposing two or more hardware layers -> -> Assign hardware layer for graphical high load function, such as video playback -> -> 4.1.2.3.6 Reduced Dependency of Hardware -> -> Page 26 of 159 -> -> ![](media/picture120.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Window Manager must be able to retrieve system structure regarding displays and layers of -> -> each display. And system must provide a mechanism to adapt any structure without re-build, -> -> such as by using re-configuration. -> -> 4.1.2.3.7 Multi Window -> -> AGL specifies that automotive grade Linux shall manage multiple windows owned by multiple -> -> processes on a display. -> -> AGL specifies that automotive grade Linux shall support multi-headed display. -> -> 4.1.2.3.8 Compatibility -> -> AGL specifies that automotive grade Linux shall have a window manager that uses only public -> -> APIs provided by Window System and OpenGL/ES 2.0 for rendering and user interaction. -> -> AGL specifies that automotive grade Linux shall have a window manager that relies on a -> -> standard rendering API such as OpenGL/ES 2.0 only. The window manager shall not rely on any -> -> hardware specific API. -> -> A window system and OpenGL/ES 2.0 API are responsible for a hardware abstraction. -> -> **4.1.3 Policy Manager** -> -> **4.1.3.1 Overview** -> -> 4.1.3.1.1 Purpose -> -> Policy Manager collects information and makes decisions based on them. To do that, Policy -> -> Manager collects lots of status, such as user operation and application status, then issue Vehicle -> -> Info Control or Resource Control to provide information. Policy Manager controls two types of -> -> resource, one is called “GUI resources” such as screen and sound, and other one is called -> -> Page 27 of 159 -> -> ![](media/picture121.jpeg)![](media/picture122.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> “System resources” such as CPU and memory. -> -> 4.1.3.1.2 GUI Resources -> -> (1) Definition -> -> · About Control of GUI Resources -> -> AGL is supposed the following devices in this feature. For example, display with touch panel, -> -> speaker, and microphone. And AGL defines that “GUI resources” are resources that provide user -> -> or is provided by user on those devices, such as windows, sound streams and input events. -> -> **Figure 7-1: GUI resources** -> -> Page 28 of 159 -> -> ![](media/picture123.jpeg)![](media/picture124.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Policy Manager controls GUI resources according to external conditions. For example, Policy -> -> Manager limits the information of GUI resources while the vehicle is driving, because, the too -> -> much information distracts the attention of driver from driving operations. -> -> · Associated Software Architecture -> -> The software architecture of Policy Manager and related components regarding GUI resources -> -> control is as below. -> -> **Figure 7-2: Associated Software Expected Use Case** -> -> Page 29 of 159 - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - > **No** > **Component** > **Description** - > - > **.** - ---------- ------------------------ --------------------------------------------------------- ------------------------------------------------------- - > 1 > Homescreen > Request to control of GUI resources. - - > 2 > Applications > Request to output or input of GUI resources. - - > 3 > UI Component > Receive driving mode and day night mode. And - > - > then provide the corresponding feature to - > - > applications UI such as input limitation and - > - > changing the theme. - - > 4 > Application Manager > Detect application installation. Then Notify the - > - > definition of GUI resources such as role by - > - > application configurations. - - > 5- > Vehicle > Window Manager - > > - > 1 > Info - > - > Control - - > 5- > Sound Manager - > - > 2 - - > 5- > Input Manager - > - > 3 - - > 5- > Vehicle Info Distributor - > - > 4 - - > 5- > User Manager - > - > 5 - ----------------------------------------------------------------------------------------------------------------------------------------------------- - -> ![](media/picture125.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Policy Manager is related with the below components. -> -> (2) Role -> -> Page 30 of 159 - - ----------------------------------------------------------------------------------------------------- - > **ID** > **Role** > **Description** - ---------- ------------------------------ ----------------------------------------------------------- - > 1 > External condition > (1) Receives the external conditions. - > - > collection - - > 2 > Judgment of priority of > (1) Receives the input/output/control request of - > > - > GUI resource > GUI resources. - > - > (2) Judgment the GUI resource owner according to - > - > external conditions. - - > 3 > GUI resource control > (1) Issue the GUI resource control according to - > - > judgment. - > - > (2) Notify the driving mode and day night mode - > - > that is calculated by external conditions. - ----------------------------------------------------------------------------------------------------- - -> ![](media/picture126.jpeg)![](media/picture127.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Policy Manager has the below role. -> -> Page 31 of 159 -> -> ![](media/picture128.jpeg)![](media/picture129.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **Figure 7-3: Definition of Role** -> -> GUI resource classifies screen resource, sound resource and input resource. Details of each -> -> resource type are as follows: -> -> a. Screen Resource -> -> a-1. External Condition Collection -> -> Policy Manager collects the below definition that is related with screen resource. -> -> **Figure 7-4: Definition of screen resource** -> -> • Concept of Display, Layer, Layout and Area -> -> AGL supports not only one physical display but also two or more displays. Each display has one -> -> or more layer. And each layer must be connected to one layout defined by Homescreen. Layout -> -> Page 32 of 159 -> -> ![](media/picture130.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> consists of one or more areas. “Area” is graphics composed area to display specific graphics -> -> window. -> -> The z-order of layers is flexible. Policy Manager decides the z-order of each layer depending on -> -> objectives of them. For example, layer-1 was used as “phone call notification”, and layer-2 was -> -> used as displaying “map”, then Policy Manager will decide that layer-1 should be upper than -> -> layer-2. -> -> Layer is created by application including Homescreen. When application creates layer, -> -> application specifies layer type. Layer type is roughly categorized as “Basic” and “Interrupt”. -> -> “Basic” layers are used to display application itself such as media playback, map drawing and -> -> setting menu. “Interrupt” layers are used to display overlay windows such as information alert -> -> and enlarged view. -> -> When application creates layer with ”Basic” type, application must specify layout type for it. On -> -> the other hand, the case layer with “Interrupt”, application must specify corresponding “Basic” -> -> layer. The layout of “Interrupt” layer is followed by “Basic” layer’s layout. -> -> From the capability of Policy Manager point of view, the main purpose of layer is to decide z- -> -> order. In other words, if there is a scenario to change z-order of two or more windows triggered -> -> by system status change and/or user operation, then such kind of window must assign to -> -> individual layer. -> -> • Concept of Layer Owner, Role and Surface -> -> “Layer owner” is application which created that layer. “Layer owner” can request each area of -> -> that layer. When “Layer owner” requests specific area, “Layer owner” also specify “Role” of -> -> area. “Role” represents how to be used that area, and used to define z-order of layers by Policy -> -> Manager. -> -> “Layer owner” also can request to change “Role” for specific area, however, whether “Role” -> -> change is acceptable or not is decided by Policy Manager by using policy rule. -> -> One area should connect to one graphics window. AGL defines the term “Surface” as graphics -> -> window to display into one area. -> -> Page 33 of 159 -> -> ![](media/picture131.jpeg)![](media/picture132.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Surface is a canvas to draw graphical image by application. To show via physical display, surface -> -> drawn by application must be assigned to specific area. Figure 7-16 describes simplest example -> -> to assign one surface to full screen with one layer. If layer has two or more areas, then -> -> corresponding surfaces are mapped to each area. According to example of Figure 7-16, surface -> -> is fit to area size as “squeeze”, however AGL also provide a way to fit as “letterbox” and “pan & -> -> scan”. -> -> **Figure 7-5: Definition of Surface** -> -> • Subdivision of “Interrupt” Layer -> -> Basically, “Basic” layer corresponding to “Interrupt” layer is used to display application’s main -> -> surface. However there are some exceptions. For example virtual keyboard is not needed main -> -> surface. However, to follow this layer type rule, virtual keyboard must have corresponding -> -> “Basic” layer. But this “Basic” layer never used to display. Also on-screen, such as alert message -> -> is not needed main surface too. But it must have corresponding “Basic” layer from same reason. -> -> According to above concept and some exceptions, AGL defines four layer types described -> -> as Table 7-3. -> -> Page 34 of 159 - - --------------------------------------------------------------------------------------------------------- - > **No** > **Type** > **Summary** > **Example** - ---------- ------------- -------------------------------------------------------- ----------------------- - > 1 > Basic > This is application’s basic screen. Typically, > Map of navigation - > - > application requests this layer at first time. - - > 2 > Interrupt > This is application’s popup screen. > Enlarged view of - > - > navigation - - > 3 > On-screen > This is system popup screen. Typically, On- > Warning message - > > - > screen service (e.g. Homescreen) requests > popup - > - > this layer. - - > 4 > Software > This is the software keyboard screen. > Software keyboard - > > - > keyboard > Typically, software keyboard service - > - > requests this layer. - --------------------------------------------------------------------------------------------------------- - - ------------------------------------------------------------------------------------------------------ - > **No** > **Contents** > **Summary** > **Example** - ---------- ---------------- ------------------------------------------------------- ------------------ - > 1 > Role > This is screen owner (such as application or > Navigation - > - > service) role. - - > 2 > Sub role > This is specific screen role. > Enlarged view - ------------------------------------------------------------------------------------------------------ - -> ![](media/picture133.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> a-2. Judgment of Priority of GUI Resource -> -> Policy Manager receives the request with “Role” that is related with each screen resource. Role -> -> is the category name of screen resource priority. Role is used to judgment of priority by Policy -> -> Manager. Table 7-4 and Figure 7-6 describes the definition of role and sub role. -> -> Role consists of role and sub role. Role is screen owner role such as “Navigation” and “Software -> -> Page 35 of 159 -> -> ![](media/picture134.jpeg)![](media/picture135.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> keyboard”. Sub role defines when layer type of the screen resource is not “Basic”. Sub role is -> -> popup screen role such as “Enlarged view” (of Navigation). -> -> **Figure 7-6: Definition of Role and Sub role** -> -> The screen resources are sorted of priority that is related to role by Policy Manager. If display -> -> has two or more layers, then all layers will be superimposed by z-order. -> -> In addition, Policy Manager decides the area of "Interrupt" layer using role. Area of "Interrupt" -> -> layer must be same area of the related "Basic" layer. "related" means that "Role" (is not "Sub -> -> role") of "Basic" and "Interrupt" is same. For examples, if "Interrupt" layer is set “Navigation” -> -> role and “Lane guidance” sub role, this is set in same area of "Navigation" role. -> -> a-3. GUI resource control -> -> Policy Manager controls the screen resources using Vehicle Info Control. Policy Manager only -> -> issues to control the screen resources but it is actually controlled by Vehicle Info Control -> -> directly. -> -> Page 36 of 159 -> -> ![](media/picture136.jpeg)![](media/picture137.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> There are three types of screen resource control: -> -> One is allocation of each surface such as position, size and size-fitting method. -> -> Second one is visibility control. Basically, visibility should be “ON” during area owner was -> -> assigned. However, visibility may set to “OFF” during driving mode due to driving restriction. -> -> Last one is order control of each layer. Policy Manager decides the order of each layer, and issue -> -> z-order information for each layer. -> -> b. Sound Resource -> -> b-1. External Condition Collection -> -> Policy Manager receives the below definition that is related with sound resource. -> -> **Figure 7-7: Definition of Sound Resource** -> -> • Zone -> -> Zone is a place in the car, such as driver zone, passenger zone, rear seat zone. Each zone can -> -> play at the same time. -> -> Page 37 of 159 - - ------------------------------------------------------------------------------------------------- - > **No** > **Type** > **Summary** > **Example** - ---------- ------------- ---------------------------------------------- ------------------------- - > 1 > Basic > This is application’s basic sound. > Music of media - > - > player - - > 2 > Interrupt > This is application’s interrupt sound. > Guidance of - > - > Navigation - - > 3 > Beep > This is beep. Typically, Homescreen > Display touch sound - > - > requests this type. - ------------------------------------------------------------------------------------------------- - -> ![](media/picture138.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> • Sound type -> -> Sound type is the category of sound resource. Sound type must be set by each sound resource -> -> owner such as application. If application wants to play sound, it must be assigned to proper -> -> sound type of proper zone. Only one sound stream can occupy specific sound type of specific -> -> zone. In other words, if two or more sound streams should be mixed in same zone, then each -> -> sound stream must assign to individual sound type. -> -> AGL supports the following sound type, however it’s just sample and should be configurable. -> -> • Stream -> -> Stream is connection of sound resource that is made in applications. Sound is transferred in -> -> stream. -> -> b-2. Judgment of Priority of GUI resource -> -> Policy Manager receives the request with “Role” that is related with each sound resource. Role -> -> is the category name of sound resource. Role is used to judgment of priority by Policy -> -> Manager. Figure 7-8 describes the definition of role. -> -> Page 38 of 159 -> -> ![](media/picture139.jpeg)![](media/picture140.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **Figure 7-8: Sample Role** -> -> The sound resources in the same zone and same sound type are switched along the priority that -> -> is related to role by Policy Manager. In other words, the sound resources of different zones or -> -> different sound type are not switched. They are mixed. -> -> b-3. GUI Resource Control -> -> Policy Manager controls the sound resources using Vehicle Info Control. Policy Manager only -> -> issues to control the sound resources but it is actually controlled by Vehicle Info Control -> -> directly. -> -> There are two types of sound resource control: -> -> One is playback control such as play, pause and stop. Policy Manger issues to play sound for -> -> sound area owner, and if area owner was changed, then issue to stop previous playing sound -> -> Page 39 of 159 -> -> ![](media/picture141.jpeg)![](media/picture142.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> stream and to start play latest area owner. -> -> Other one is volume control. Two or more sound streams of same zone may playback -> -> simultaneously if each sound streams are assigned to different sound type. In this case, Policy -> -> Manager specifies volume parameter for each sound stream. For example, if route guidance and -> -> music playback are mixed, assign higher volume to route guidance and volume down for music -> -> playback. -> -> c. Input Resource -> -> c-1. External Condition Collection -> -> Policy Manager receives the below definition that is related with input resource. -> -> **Figure 7-9: Definition of Input Resource** -> -> • Device Name -> -> Device name is identity of input device such as steering SW and microphone. -> -> • Event Type -> -> Event type is logical group of input event from each input device such as volumes and -> -> temperatures. -> -> c-2. Judgment of Priority of GUI resource -> -> Page 40 of 159 -> -> ![](media/picture143.jpeg)![](media/picture144.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> If application wants to be notified input event, it must request input event notice with device -> -> name and event type. The request is judged whether to notify by Policy Manager using policy -> -> DB. And Vehicle Info Control notifies input event to applications along the result of the -> -> judgment as below. -> -> **Figure 7-10: Definition of routing rule** -> -> OEM special switch means product variant configuration in Figure 7-10. -> -> c-3. GUI Resource Control -> -> Policy Manager controls the input resources using Vehicle Info Control. Policy Manager only -> -> issues to control the input resources but it is actually controlled by Vehicle Info Control directly. -> -> Input resource control is to specify event target to Vehicle Info Control. -> -> 4.1.3.1.3 System Resources -> -> (1) Definition -> -> Policy Manager controls System resources according to external conditions. For example, Policy -> -> Manager limits memory usage of background applications when memory shortage was occurred. -> -> Page 41 of 159 - - ---------------------------------------------------------------------------------------------------- - > **ID** > **Role** > **Description** - ---------- ----------------------------- ----------------------------------------------------------- - > 1 > External condition > (1) Receives the external conditions. - > - > collection - - > 3 > System resource control > 1. Issue the System resource control according - > - > to external condition change. - > - > 2. Kill process(s) forcibly according to external - > - > condition change. - ---------------------------------------------------------------------------------------------------- - -> ![](media/picture145.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Policy Manager controls System resources by using “Resource Control” of kernel layer. So, -> -> target resources are CPU, memory, storage bandwidth and network bandwidth. -> -> **4.1.3.2 Requirements** -> -> 4.1.3.2.1 Screen Resource -> -> (1) External Condition Collection -> -> System must provide a mechanism to receive the definition that is used judgment of resource -> -> owner. -> -> System must provide a mechanism to receive the physical display information. Because system -> -> uses physical display information with to control surface to other system. The receive -> -> information must include as follows. -> -> a. ID -> -> b. Display resolution (Vertical and horizontal number of pixels) -> -> c. DPI -> -> d. Connected ECU -> -> Page 42 of 159 -> -> ![](media/picture146.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System must provide a mechanism to receive the layout definition. Layout definition must be -> -> able to identify the all areas of display. As a result, system recognizes the available area list -> -> according to current layout of each display. -> -> The receive definition must include the follows. -> -> a. ID -> -> b. Area list -> -> System must provide a mechanism to receive the area definition. Area is set application surface -> -> by system if the request is accepted by system. As a result, application surface displays on the -> -> device. -> -> The receive request must include the follows. -> -> a. Layout ID -> -> b. ID -> -> c. Area position (Coordinate of the upper-left) -> -> d. Area size (Length \* Width) -> -> System must provide a mechanism to receive the layout type of each display. System can specify -> -> the available areas if layout type is defined. The receive information must include the follows. -> -> a. Display ID -> -> b. Layout ID -> -> System must provide a mechanism to receive the priority rule. Because system must judge the -> -> providing resource using it when the request is collision. -> -> The receive information must include the follows. -> -> a. Role -> -> b. Priority -> -> System must provide a mechanism to receive the vehicle status. Because system must judge -> -> driving mode. -> -> The receive information must include the follows. -> -> a. Velocity -> -> Page 43 of 159 -> -> ![](media/picture147.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> b. Brake status -> -> System should provide a mechanism to receive the vehicle status. Because system should judge -> -> day night mode. -> -> The receive information should include the follows. -> -> a. The brightness of the interior -> -> System should provide a mechanism to receive the user status. Because system should judge the -> -> providing resource using it. -> -> System should provide a mechanism to receive the infrastructure status. Because system should -> -> judge the providing resource using it. -> -> (2) Judgment of Priority of GUI Resource -> -> System must provide a mechanism to assign resource owner to the requested resource -> -> according to external condition. This means that system judges the providing resource. -> -> System must provide a mechanism to receive the layer request. System allocates the physical -> -> resource. Application must request the area on this layer if application needs to display the -> -> resource. -> -> The receive request must include as follows. -> -> a. Role -> -> b. Layer type -> -> The receive request should include as follows. -> -> c. Display ID -> -> System must provide a mechanism to receive the area request. System sorts layers in order by -> -> priority that is related with the specified role. Then system displays the application surface on -> -> the specified area on the specified layer. -> -> The receive request must include as follows. -> -> a. Role -> -> Page 44 of 159 -> -> ![](media/picture148.jpeg)![](media/picture149.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> b. Layer ID -> -> The receive request must include as follows when layer type of the specified layer is “Basic”. -> -> Because there is a specification that the area on layer except basic type must be located on the -> -> related basic type area. -> -> c. Area ID -> -> **Figure 7-11: Sequence to display** -> -> System should provide an interface to request both screen and sound resource simultaneously. -> -> In this request, requester should choose below options. -> -> a. -> Requester needs both screen and sound. For example, if screen resource was available, -> -> but sound resource was occupied by other owner of higher priority, then, request should -> -> be refused. -> -> b. -> Requester wants screen and sound resource as much as possible. For example, if screen -> -> resource was available, but sound resource was occupied by other owner of higher -> -> priority, then, only screen resource should be assigned to requester. -> -> Page 45 of 159 -> -> ![](media/picture150.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System should provide a mechanism to receive the request of forcibly acquire and forcibly -> -> release. System should be able to forcibly acquire and forcibly release request during system -> -> running. System should raise the requested surface to the top of the display. -> -> The receive request should include the follows in addition to the information of the normal -> -> request. -> -> a. Effective period (Can set unlimited) -> -> System should not raise the other surface above its during effective period. -> -> System should provide a mechanism to receive the request that is specified the following effect. -> -> a. The effect at the transition -> -> b. The effect of display surface -> -> System must provide a mechanism to judge priority of resources. The screen resources are -> -> sorted of priority that is related to role by system. If display has two or more layers, then all -> -> layers will be superimposed by z-order. -> -> System must provide a mechanism to judge visible surfaces according to vehicle running state. -> -> System must hide the surface that has too much information. -> -> (3) GUI Resource Control -> -> System must provide a mechanism to issue the resource control according to judgment. -> -> System must provide a mechanism to issue the following resource control. -> -> a. Visible / Invisible -> -> b. Change position -> -> c. Raise -> -> The receive request must include as follows. -> -> i. Surface ID \*Only case of visible. -> -> ii. Display ID \*Only case of visible. -> -> iii. Layer ID \*Only case of visible. -> -> Page 46 of 159 -> -> ![](media/picture151.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> iv. Position (Coordinate of the upper-left) \*Only case of visible and change position. -> -> v. Size (Length \* Width) \*Only case of visible. -> -> System should provide a mechanism to set the following effect of the surface to other system. -> -> a. The effect at the transition -> -> b. The effect of display surface -> -> 4.1.3.2.2 Sound Resource -> -> (1) External Condition Collection -> -> System must provide a mechanism to receive the definition that is used judgment of resource -> -> owner. -> -> System must provide a mechanism to receive the zone definition. Because system uses zone -> -> information with to control stream to other system. The receive information must include as -> -> follows. -> -> a. ID -> -> b. Sound device ID -> -> System must provide a mechanism to receive the sound type definition. Because system uses -> -> sound type information with to control stream to other system. The receive information must -> -> include as follows. -> -> a. ID -> -> (2) Judgment of Priority of GUI resource -> -> System must provide a mechanism to assign resource owner to the requested resource -> -> according to external condition. This means that system judges the providing resource. -> -> System must provide a mechanism to receive the owner request. System must be able to receive -> -> request during system running. -> -> Page 47 of 159 -> -> ![](media/picture152.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> The receive request must include as follows. -> -> a. Role -> -> b. Zone ID -> -> c. Sound type ID -> -> System should provide a mechanism to receive the request of forcibly acquire and forcibly -> -> release. System should be able to forcibly acquire and forcibly release receive request during -> -> system running. -> -> The receive request should include as follows in addition to the information of the normal -> -> request. -> -> a. Effective period (Can set unlimited) -> -> System must assign resource owner as requested. And system must not assign resource owner -> -> by other request on same area during effective period. -> -> System should provide a mechanism to receive the request that is specified the following effect. -> -> a. The effect at the transition -> -> b. The effect of output sound -> -> System must provide a mechanism to judge priority of resources when there are two or more -> -> resources on same sound type on same zone. System judges the providing resource by priority -> -> of resources that is related to role. -> -> \* Boundary of the role between Policy Manager and application. -> -> Page 48 of 159 -> -> ![](media/picture153.jpeg)![](media/picture154.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Figure 7-12: Boundary of role (Case of reverse) -> -> System should provide a mechanism to manage order of the owner request. Because system -> -> should provide a mechanism to hold the request until the request is approved. -> -> For example, if current playing interrupt sound completed, select the next play interrupt sound -> -> from request history based on the priority. -> -> (3) GUI Resource Control -> -> System must provide a mechanism to issue the resource control according to judgment. -> -> System must provide a mechanism to issue the following resource control. -> -> a. Mute / Unmute -> -> b. Change zone -> -> The receive request must include as follows. -> -> i. Stream ID -> -> ii. Device -> -> In the case of multi-channel speaker, the receive request should include as follows. -> -> iii. Channel ID -> -> Page 49 of 159 -> -> ![](media/picture155.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System should provide a mechanism to set the below effect of the sound to other system. -> -> a. The effect at the transition -> -> b. The effect of output sound -> -> 4.1.3.2.3 Input Resource -> -> (1) External Condition Collection -> -> System must provide a mechanism to receive the definition that is used judgment of resource -> -> owner. -> -> System must provide a mechanism to receive the input device information. Because system uses -> -> input device information with to control input event to other system. The receive information -> -> must include as follows. -> -> a. ID -> -> System must provide a mechanism to receive the event type definition. Because system uses -> -> input device definition with to control input event to other system. The receive definition must -> -> include as follows. -> -> a. ID -> -> b. Related event IDs -> -> (2) Judgment of Priority of GUI resource -> -> System must provide a mechanism to assign resource owner to the requested resource -> -> according to external condition. This means that system judges the providing resource. -> -> System must provide a mechanism to receive the owner request. System must be able to receive -> -> request during system running. -> -> The receive request must include as follows. -> -> a. Input device ID -> -> Page 50 of 159 -> -> ![](media/picture156.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> b. Event type ID -> -> System should provide a mechanism to judge whether to accept request according to the -> -> limitation routing rule of policy DB. -> -> (3) GUI Resource Control -> -> System must provide a mechanism to issue the resource control according to judgment. -> -> System must provide a mechanism to issue the following resource control. -> -> a. Set the routing rule -> -> The receive request must include as follows. -> -> i. Input device ID -> -> ii. Event type ID -> -> The receive request must include either as follows. -> -> iii. The allowed application -> -> iv. The denied application -> -> System should provide a mechanism to set the following information. -> -> a. Application that has active surface -> -> System should notify the touch event from touch panel to user operating application. This -> -> feature is needed because there may be case that privilege application such as Homescreen -> -> changes the active surface. -> -> 4.1.3.2.4 System Resources -> -> (1) External Condition Collection -> -> System must provide a mechanism to collect external conditions to be used by Policy Manager -> -> to decide proper system resource. -> -> Page 51 of 159 -> -> ![](media/picture157.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Policy Manager must detect creation and deletion of process. -> -> To detect creation of process, Policy Manager can assign proper system resource to created -> -> process. -> -> Also, to detect deletion of process, Policy Manager can assign resources of deleted process to -> -> other active processes. -> -> To assign proper system resource to specific process, system must provide a mechanism to -> -> identify process’s role. In other words, Policy Manager must recognize the purpose of each -> -> active process. -> -> Policy Manager must detect current memory consumption periodically. -> -> To detect current memory consumption, Policy Manager can control maximum memory to each -> -> process to prevent memory shortage. Also, Policy Manager may kill processes which were -> -> thought as not so important process. -> -> Policy Manager must detect current CPU consumption periodically. -> -> To detect current CPU consumption, Policy Manager can control priority to each process to keep -> -> system performance. Also, Policy Manager may kill processes which seem to be in unexpected -> -> busy state. -> -> System must provide a mechanism to notify application status change to Policy Manager. -> -> Application status includes as below. -> -> · GUI resource status, such as foreground or background. -> -> · -> Resuming last status or not. When system starts up or log-in user changes, system must -> -> resume last status. In this case, Policy Manager should assign much resource to last -> -> application to resume quickly as much as possible. -> -> (2) System Resource Control -> -> System must provide a mechanism to change assigned system resource per process or process -> -> group according to external conditions. -> -> According to policy based decision, Policy Manager must assign proper system resource to -> -> target process or process group by using “Resource Control” of kernel layer. (typically cgroups -> -> Page 52 of 159 -> -> ![](media/picture158.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> will be used) -> -> System must provide a mechanism to kill process or process group forcibly. -> -> 4.1.3.2.5 Resource Management -> -> Resource Management shall consist of three functional components - Resource Manager, Policy -> -> Manager, Connection Manager. -> -> Resource Management shall provide CORBA interfaces to rest of the components in the system. -> -> Each resource request shall be in form a: -> -> AppID, -> -> SourceID, -> -> RequestorZoneID, -> -> NeedAll Flag (to specify if all the resources need to be allocated ), -> -> Required Resource List. -> -> Resource Management shall be able to handle resource requests for Audio Sinks (eg: Cabin -> -> Speakers, HeadPhones) -> -> Resource Management shall be able to handle resource requests for Video Sinks (eg: Display) -> -> Resource Management shall be able to handle Source arbitration (Mic, WavPlayer instances, -> -> Tuners etc.) -> -> Resource Management shall be able to validate all the input parameters for a resource request -> -> from resource requestors. -> -> Resource Management shall be able to keep track of all the available resources. -> -> Use CCF data to identify all the resources that are possible in the system. (static identification) -> -> Page 53 of 159 -> -> ![](media/picture159.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Use dynamic registration by the resource owners to identify what resources out of the above list -> -> are available at a point of time in the system. (dynamic identification) -> -> Resource Management shall inform about resource availability and unavailability in the system -> -> through status update. -> -> Resource Management shall support stacking/queuing of resource requests. -> -> > Receive the requests from the resource requestors. -> -> > Handle each request in chronological order and check for policy validation through Policy -> -> Manager. -> -> > Add the validated requests into a priority queue. -> -> > Process each request from the top of the queue for establishing the connection. -> -> > If a request is still in the pending queue and the requestor requests to withdraw the request, it -> -> shall be removed from the queue. -> -> Each request for resource shall be handled as an independent request irrespective of any earlier -> -> request by the same requestor. In case of multiple resources requested in a single request, it -> -> shall be treated as a single request and will be processed based on the request parameters. -> -> If the NeedAll flag is set by the requestor, it shall either grant all the requested resources to the -> -> requestor or none of them shall be granted. There shall be no partial allocation of resources. -> -> If the NeedAll flag is not set, it shall be able to do partial allocation of resources i.e. grant -> -> some/all of the resources requested by the requestor. -> -> Resource Management shall provide an interface to a request owner to remove/withdraw an -> -> existing resource request. -> -> Resource Management shall check for every requested resource against a pre-defined set of -> -> policies if the request can be served at this point of time or not. Below is a list of possible inputs -> -> for the policy decision: -> -> > Currently Free or InUse Sink status -> -> > Who is the resource owner of the currently used sink resource (if it is in use) -> -> Page 54 of 159 -> -> ![](media/picture160.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> > Priority of the new requestor compared to the currently using requestor. -> -> Resource Management shall use the system state as an additional input to make a decision if a -> -> request can currently be serviced or not. Below system states can be taken as input to the -> -> policy decision: -> -> > Based on the speed restriction setting for a specific region, a request can be granted/kept -> -> pending. -> -> > Low Power Mode, Eco Mode, System errors shall also be used to make policy decisions. -> -> At any point of time it shall maintain the following information for each ZONE for use by -> -> resource requestor: -> -> > Zone ID -> -> > Allocated Source Instance -> -> > Allocated Sink Instance -> -> > Mute status -> -> Resource Management shall not consider requirements to achieve a specific feature functionality -> -> (e.g. : Lowering audio volume of rest of the sinks when a phone call is in progress) as an input to -> -> the resource management policy. -> -> Resource Management shall not provide support for requirements to achieve a specific feature -> -> functionality (e.g.: Pausing a pausable source when phone call is in progress). -> -> Resource Management shall maintain priorities for all non-entertainment sources (eg: -> -> AMFM\_TA, PHONE\_NORMAL, NAV\_VG, etc. shall all have priorities). In case two sources have -> -> same priority, the first requestor shall be granted a resource. In case of difference in priorities, -> -> the highest priority resource request shall be the one that is granted the resource. -> -> Resource Management shall maintain same priority for all entertainment sources (eg: MP, DVD, -> -> AMFM\_NORMAL, etc. shall all have the same priority). The last received Entertainment resource -> -> request will be the one that is granted the resource. -> -> A valid (parameter and policy validated) resource request shall never be denied to the requestor. -> -> It shall either be granted or kept as a pending request in the priority queue. -> -> Page 55 of 159 -> -> ![](media/picture161.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Resource Management shall be responsible for reporting a broken resource status. -> -> It shall be the responsibility of the resource requestor to remove the request from Resource -> -> Manager if the resource is no longer needed. -> -> Resource Management shall assign a sink instance (the specific instance allocated out of all -> -> available instances of the requested sink type for a particular zone) to a resource request, once -> -> the request is granted against the set policy. -> -> Resource Management shall maintain connection state of an already granted connection. -> -> Possible connection states are Active or Passive. -> -> > When a source has the primary (master) control over a sink, the connection state will be -> -> active. -> -> Ex: In normal mode, a driver requesting for AMFM source to Driver HeadPhone Sink connection. -> -> > When a source has the secondary (slave) control over a sink, the connection state will be -> -> passive. -> -> Ex: Driver using the AMFM source, at the same time the rear passenger requesting for same -> -> AMFM source on Rear headphone sink. -> -> Resource Management shall be responsible for connecting/building a new source-sink -> -> connection using the underlying platform support. -> -> Resource Management shall be responsible for removing/releasing an existing source-sink -> -> connection using the underlying platform support. -> -> Resource Management shall request to mute the audio sink before an existing connection is -> -> removed/released. -> -> Resource Management shall provide an interface to unmute the audio sink when a connection is -> -> re-established and the active source is ready to use the sink for audio routing. -> -> Resource Management shall provide an interface to unmute an audio sink. -> -> Page 56 of 159 -> -> ![](media/picture162.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Resource Management shall inform the resource requestor when the sink is connected and ready -> -> to be used for audio routing. -> -> Resource requestor needs to inform the Resource Manager when they are ready to start audio -> -> routing. This information shall be used to unmute the allocated sink. -> -> Resource Management shall maintain the system connection table at any point of time. -> -> Connection table contains information regarding which sink is currently allocated to which -> -> source instance. -> -> Resource Management shall support handling of change in behaviour based on Limo setting: -> -> > Share the source between the Rear Seat headphone (Limo mode owner) and Cabin Speakers. -> -> System shall support 4 ForegroundBeep sinks and 2 ForegroundSpeech sinks. 2 additional sinks -> -> are reserved for Engine noise synthesis which is outside the scope of this document. Additionally -> -> 1 FG speech sink and 1 FG beep sink is reserved for future use by ISC. -> -> The number of sinks supported by the system shall be configurable through LCF parameter. -> -> Headphones shall not be required to support any foreground sinks. -> -> In case of Foreground sources and Tuner interrupt sources, any sink that is taken away from a -> -> source because of a high-priority interruption, need to be returned back to the previous source -> -> (if the request from the previous source is still valid and it's the next highest priority request). -> -> As part of requirement to improve connection handling efficiency, it shall have exceptions to not -> -> disconnect the active connection while switching between any Tuner Source-Sink Background -> -> connection to another Tuner Interrupt Source with same sink connection. -> -> It shall inform Resource Manager about a errors/failure in any of the existing sinks. -> -> It shall inform Resource Manager about a errors/failure in any of the existing sources. -> -> Page 57 of 159 -> -> ![](media/picture163.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It shall provide the error state information about all resources to the Platform Error State -> -> Manager. -> -> It shall inform the resource requestors in case the request is for an erroneous or faulty sink. -> -> It shall wait for the application manager to notify it to prepare for shutdown. -> -> It shall interact with the data storage manager to access (read and write) persistence data. -> -> It shall interact with the data storage manager to access CCF data. -> -> It shall support rules/exceptions (Blacklist) that define resource allocation strategy based on -> -> current system scenario. -> -> E.g.: If there is a blacklist rule that says a Speech session shall not be allowed while phone call -> -> is in progress, then even if a FG sink is available, Speech shall be denied resources and kept as a -> -> pending request. -> -> It shall provide an interface to receive Limo mode setting status. -> -> It shall provide an interface to receive status when a rear-user selects to take Cabin control. -> -> It shall use interfaces of early app to receive information if it's already using Audio/Video -> -> resources and update its internal status accordingly. -> -> On any change in input to the Policy Manager (system state) it shall reevaluate all active -> -> connections and reconnect or disconnect if required. -> -> E.g. An Amp gets disconnected, then all active connects have to be disconnected. -> -> Once the Amp gets reconnected, the connection info shall be reevaluated and final set of -> -> connections shall be rebuilt with Amp. -> -> It shall provide CORBA interfaces to the Resource Manager. -> -> Page 58 of 159 -> -> ![](media/picture164.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It shall be responsible for connecting/building a new source-sink connection using the underlying -> -> platform support. -> -> It shall be responsible for removing/releasing an existing source-sink connection using the -> -> underlying platform support. -> -> It shall request to mute the audio sink before an existing connection is removed/released. -> -> It shall provide an interface to unmute an audio sink. -> -> System shall support 4 ForegroundBeep sinks and 2 ForegroundSpeech sinks. 2 additional sinks -> -> are reserved for Engine noise synthesis which is outside the scope of this document. Additionally -> -> 1 FG speech sink and 1 FG beep sink is reserved for future use by ISC. -> -> The no. of sinks supported by the system shall be configurable through LCF parameter. -> -> It shall inform Resource Manager about a errors/failure in any of the existing sinks. -> -> Headphones shall not be required to support any foreground sinks. -> -> It shall wait for the application manager to notify it to prepare for shutdown. -> -> It shall interact with the data storage manager to access (read and write) persistence data. -> -> It shall interact with the data storage manager to access CCF data. -> -> **4.1.4 Sound Manager** -> -> A sound manager is a mechanism in which a sound output demand in two or more zones from -> -> two or more applications is arbitrated, an audio server manages control of a sound output and a -> -> policy manager manages a mediation rule. -> -> Page 59 of 159 - - ---------------------------------------------------------------------------------------------------- - > **No.** > **Role** > **Description** - ----------- --------------------------- ------------------------------------------------------------ - > 1 > Routing sound streams > To route each sound stream to proper zone(s). - - > 2 > Mixing level control > Mixing two or more sound streams after volume - > - > control of each sound streams. - - > 3 > Sound effect > Provide a capability of sound effect as follows, - > - > · When changing sound stream. E.g. fade-in, - > - > fade-out and cross-fade. - - > 4 > Reduced dependency of > Provide well-defined interface to reduce - > > - > hardware > dependency of hardware. Well-defined interface - > - > also makes it possible to increase the effect of - > - > portability and development cost. - ---------------------------------------------------------------------------------------------------- - -> ![](media/picture165.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> A zone is a place in the car divided by the purpose of output power of sound like a driver zone, a -> -> passenger zone, and a rear seat zone. Each zone can play at the same time. Refer to "Sound -> -> resource" of "7.1.1.2 (2) Role" of "7.1 Policy Manager" for the details of a zone. -> -> Applications that play and capture audio via the audio server, applications that control things like -> -> volume and routing via the audio server, and a policy manager that works with the audio server -> -> to implement automatic audio policies. -> -> **4.1.4.1 Use Case** -> -> Please refer “sound resource control” of Policy Manger section. -> -> Table 7-14 describes the role of sound manager to be satisfied above purpose and use cases. -> -> **4.1.4.2 Requirements** -> -> Page 60 of 159 -> -> ![](media/picture166.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 4.1.4.2.1 Routing Sound Streams -> -> System must provide a mechanism to manage sound “zone”. -> -> Refer to "(2) Sound resource" of "7.3.1.2.2 Role" of "7.3 Policy Manager" for the details of a -> -> zone and how to manage zone. -> -> System must provide a mechanism to manage one or more connected sound devices, and each -> -> channels of each sound device. -> -> One or more sound devices are usually connected to a system, and each sound device consists -> -> of one or more channels. And each channel outputs the sound of a monophonic recording. -> -> For example, as for a stereo sound, a speaker is connected to each of two channels, and it is -> -> arranged at the driver side of a car, and the passenger seat side. If a telephone call is got when -> -> outputting stereo music from both of speakers, only the channel of a driver side needs to lower -> -> musical volume, and needs to mix and output the sound of a telephone (to louder sound than -> -> music). For this reason, the system needs to recognize and control each channel of each sound -> -> device. -> -> The system must determine the route which outputs two or more sound streams to two or more -> -> zones. -> -> Although the output place zone of a sound stream may change dynamically according to the -> -> present state of vehicles and a policy manager makes the decision, sound manager requires the -> -> mechanism in which a route is smoothly changed based on the determination of policy manager. -> -> System must provide a mechanism to manage two or more sound zone as grouped zone. -> -> System must provide a mechanism to do volume control for specific zone. -> -> All the sound outputted to a certain zone is adjusted by the volume of the zone. -> -> System must provide a mechanism to control sound stream. -> -> Control of a sound stream is as follows. -> -> · -> Mute/unmute: System must provide a mechanism to do mute or unmute to any sound -> -> stream. -> -> · -> Suspend/resume: System must provide a mechanism to suspend or resume to any sound -> -> Page 61 of 159 -> -> ![](media/picture167.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> stream. -> -> Volume control: System must provide a mechanism to change volume to any sound stream. -> -> 4.1.4.2.2 Mixing Level Control -> -> The system must offer the mechanism for arbitrating two or more sound streams outputted to -> -> the same zone according to a policy manager's arbitration. -> -> System must provide a mechanism to do mixing after volume control of each sound streams. -> -> System must provide a mechanism to attenuate sound volume when other sound stream -> -> requested to play into same sound zone. -> -> In this case, system must also provide a mechanism to return to the volume before attenuating -> -> the volume of a sound stream when interrupted sound stream was ended. -> -> System must provide a mechanism to mute sound volume when other sound stream requested -> -> to play into same sound zone. -> -> In this case, system must also provide a mechanism to unmute sound volume when interrupted -> -> sound stream was ended. -> -> System must provide a mechanism to suspend sound stream playback when other sound stream -> -> requested to play into same sound zone. -> -> In this case, system must also provide a mechanism to resume playback when interrupted sound -> -> stream was ended. -> -> 4.1.4.2.3 Sound Effect -> -> When sound stream was changed, system must provide a mechanism to do sound effect. -> -> System must provide typical sound effect such as fade in and fade out. -> -> System must provide a mechanism to add, replace and delete sound effect easily by using plugin -> -> architecture. -> -> Page 62 of 159 - - ------------------------------------------------------------------------------------------------------------------------- - > **No.** > **Input type** > **Associated device** > **Description** - ----------- ------------------- -------------------------- -------------------------------------------------------------- - > 1 > Key > Steering switch > Simple key event. - > - > Deliver to application. - - > 2 > Keyboard > Virtual keyboard > Keyboard event. - > - > Deliver to application, then use input - > - > method backend if needed. - - > 3 > Touch > Touch panel > Touch event, such as start, stop and move. - > - > Also supports double click and multi-touch - > - > capability. - > - > Deliver to application. - - > 4 > Sound > Microphone > Sound input. - ------------------------------------------------------------------------------------------------------------------------- - -> ![](media/picture168.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 4.1.4.2.4 Reduced Dependency of Hardware -> -> Sound Manager must be able to retrieve system structure regarding sound device and channels -> -> of each device. And the system must enable addition/deletion of a sound device by the means -> -> which does not need rebuild of systems, such as a configuration. -> -> **4.1.5 Input Manager** -> -> The Input Manager provides a capability to deliver input events to the proper application -> -> depending on request from Policy Manager. Policy Manager will decide event target per each -> -> input area. Also, the IVI system may use various car-oriented input devices such as steering -> -> switch. Input manager provides a capability to abstract such kind of input event. -> -> **4.1.5.1 Use Case** -> -> Please refer “input resource control” of Policy Manger section. - - --------------------------------------------------------------------------------------------------------- - > **No.** > **Role** > **Description** - ----------- --------------------------- ----------------------------------------------------------------- - > 1 > Abstract device event > Provide capability to abstract from device event to - > - > application readable event name, such as “volume - > - > up” and “right arrow”. - - > 2 > Event delivery > Provide capability to deliver input event to specified - > - > application. - --------------------------------------------------------------------------------------------------------- - -> ![](media/picture169.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Deliver to application or voice recognition -> -> engine. -> -> Table 7-14 describes the role of input manager to be satisfied above purpose and use cases. -> -> **4.1.5.2 Requirements** -> -> **4.1.5.3 Abstract Device Event** -> -> System must provide a mechanism to re-configuration regarding input devices without re-build. -> -> Because, connected input devices may different by car grade, car type, destination and optional -> -> equipment. -> -> **4.1.5.4 Event Delivery** -> -> System must provide a mechanism to deliver any input event to any application. -> -> System must provide an interface to apply event delivery rule by using attribute pair “device id” -> -> and “destination application id”. -> -> Device id specifies a logical device name. Logical device name will link to physical device by -> -> UIM.2.1.2. -> -> Page 64 of 159 -> -> ![](media/picture170.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Also, system must provide a mechanism to change event delivery rule dynamically. -> -> System must provide a mechanism to link between logical device name and physical device. -> -> System must provide a mechanism to deliver any input event to any application depending on -> -> delivery rule defined in UIM.2.1.1. -> -> System must provide a mechanism to inhibit any event delivery. -> -> This function makes it possible to restrict input event during driving mode. -> -> **4.1.6 User Manager** -> -> **4.1.6.1 Use Case** -> -> **4.1.6.2 Personal Identification** -> -> User manager provides multi-user environment. A car may be used by two or more people, and a -> -> person may use two or more cars, by using rent-a-car, for example. -> -> **4.1.6.3 User Preference** -> -> Multi-user environment provides same user experience for each user. -> -> Also, multi-user aims seamless personal data sharing not only between cars but also including -> -> other devices such as smartphones and smart TVs. Furthermore, it will include seamless data -> -> sharing from your home and your office. -> -> Identify the person, and log-in to the IVI system as a specified user. Personal identify may be -> -> provided by traditional user name and password pair, smart key or biometrics. -> -> Once a user has logged-in to IVI system, IVI system should provide personalized user -> -> experience. For example, Bob uses English, but Alice uses French. Also, Bob likes rock-music, -> -> *but Alice likes classic-music. In this case, English and rock-music should be selected when B*ob is -> -> Page 65 of 159 -> -> ![](media/picture171.jpeg)![](media/picture172.jpeg)![](media/picture173.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> logged-in, and Japanese and classic-music should be selected when Alice is logged-in. -> -> **Figure 7-24 : Provide Logged-in User’s UE (User Experience)** -> -> **4.1.6.4 Rent-a-car and/or Replacing a Car** -> -> When Bob uses a rent-a-car, same preference should be adapted as if he rode his own car. If -> -> Bob’s preference was stored in a cloud, then this can be supported. However, security is -> -> important in this scenario. For example, Bob must not be able to access to other user’s -> -> preference. -> -> **Figure 7-25 : User data sharing between cars** -> -> Page 66 of 159 -> -> ![](media/picture174.jpeg)![](media/picture175.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **4.1.6.5 Seamless Data Sharing** -> -> Cloud-based user data syncing will enable seamless data sharing between IVI systems and -> -> smart-phones, home networks and accessing from your offices. -> -> **Figure 7-26 : User data sharing over the cars** -> -> **4.1.6.6 Role** -> -> **Error! Reference source not found.** describes the role of the User Manager to satisfy the above -> -> purpose and use cases. -> -> **Table 7-17 : Role of User Manager** -> -> **No.** **Role** **Description** -> -> Page 67 of 159 -> -> ![](media/picture176.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 1 User identification -> Provide a mechanism to identify user, such as user -> -> name and password pair, smart key and biometrics. -> -> Provide a mechanism to log-in to the IVI system as -> -> a specified user. -> -> When a different user logs in, proper user -> -> preference for the user must be applied, and -> -> resume last state of corresponding user. -> -> Also, each application can store application’s data -> -> per user. In such cases, proper user data must be -> -> applied when a different user logs in. -> -> 2 User preference -> Provide a mechanism to apply user preference of -> -> logged-in user. -> -> User preference includes the following data. -> -> · User interface, such as locale and wall- -> -> paper. -> -> · Resume last application’s status of specified -> -> user. -> -> · Application specific data. -> -> 3 User data management -> Provide a mechanism to manage cloud based user -> -> data. -> -> The following capabilities are required. -> -> · Download user data of the logged-in user -> -> from the cloud. -> -> · Update cloud data if the user data was -> -> updated by user operation or otherwise. -> -> · Periodically sync-up w/ cloud because user -> -> data may be updated by other devices. -> -> In addition to the above basic capabilities, user data -> -> cache is essential for a car, since a car may not -> -> always have a reliable network connection. -> -> 4 Security Because cloud based sharing user data may be -> -> accessed from any place, user data must be -> -> protected from unexpected data access. -> -> Page 68 of 159 -> -> ![](media/picture177.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> So, IVI system must provide security mechanism -> -> regarding accessing to cloud based user data. -> -> **4.1.6.7 Requirements** -> -> 4.1.6.7.1 User Identification -> -> System must provide a mechanism to identify logged-in user. -> -> System must provide a mechanism to enter user name and password, and verify password to -> -> identify logged-in user. -> -> System should provide a mechanism to read smart key attribute to identify logged-in user. For -> -> example, using NFC. -> -> System should provide a mechanism to identify logged-in user by using biometrics. -> -> 4.1.6.7.2 User Preference -> -> When a logged-in user is identified, system must apply user preference depending on the -> -> currently logged-in user. -> -> System must provide a mechanism to apply personalized user experience as follows. -> -> - Locale settings -> -> - UX theme -> -> Wall paper -> -> System must provide an easy mechanism to add plugin function and/or attribute of personalized -> -> user experience. -> -> Page 69 of 159 -> -> ![](media/picture178.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System must provide a mechanism to switch application data per user, and apply logged-in -> -> user’s application data automatically. -> -> When user is identified and logged-in, the system must apply last status of logged-in user. Last -> -> status refers to the status of the system as the current logged-in user has last logged-out of the -> -> system. Specifically, last status includes the following. -> -> - Foreground applications. That means displayed applications. -> -> Background applications. -> -> When user logs in for the first time, the system must apply user preference for new log-in user. -> -> System must provide a mechanism to apply default preference attributes for new log-in user. -> -> System must provide default preference attributes and HMI to apply for first time log-in user. -> -> 4.1.6.7.3 User Data Management -> -> System must provide a mechanism to manage user data. -> -> AGL defines “user data” as a general term which includes all the data necessary to realize user -> -> preference. -> -> User data shall be stored in the cloud. The cloud provides user data not only to IVI systems but -> -> also other systems and/or devices such as smartphones, Home-PCs, business-PCs, HEMS and -> -> home electronics. -> -> System must provide a mechanism to apply user preference and to supply user data to -> -> application by using cloud based user data. -> -> System must provide a mechanism to download cloud based user data and apply it as user data -> -> of the IVI system. -> -> When user data is updated in the IVI system, then the system must upload updated user data to -> -> the cloud. -> -> Also, since other device or system may update shared user data elsewhere, system must provide -> -> Page 70 of 159 -> -> ![](media/picture179.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> a mechanism to sync with the cloud periodically to keep user data in the IVI system up-to-date. -> -> Because the IVI system is not necessarily connected to a network, the system must provide a -> -> mechanism to cache downloaded user data. -> -> If the IVI system re-connected to a network, system must sync with the cloud as soon as -> -> possible. -> -> 4.1.6.7.4 Security -> -> Because user data may include personal information, system must provide a mechanism to -> -> protect user data from risks including but not limited to leakage, tampering and theft. -> -> System must provide a mechanism to protect user data when accessing to the cloud. -> -> - -> System must authenticate communication entity. In other words, IVI system must -> -> authenticate cloud server, and cloud server must authenticate client such as IVI system, -> -> smartphone or PC. -> -> - -> System must provide a mechanism to encrypt transported data via a network. -> -> - -> System must provide a mechanism to transport data via a network with protection -> -> against falsification of data from unauthorized access or illegal access. -> -> - -> Cloud server must provide a mechanism to authenticate individual user, and provide -> -> user data only to the authorized user. -> -> Because, two or more user’s user data may be stored in IVI system as a cache, system must -> -> provide a mechanism to protect cache data from other users. The protection of cached data to -> -> include not only the current multi-user environment risk, but also the risk of attacks against -> -> cached data. In other words, only logged-in user’s cache data can be accessed. -> -> 4.2 Web HMI -> -> Web based HMI. Contains applications, web runtime environment, and web-based home screen. -> -> **4.2.1 Web API** -> -> Page 71 of 159 -> -> ![](media/picture180.jpeg)![](media/picture181.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It is discussed that HMI parts of IVI system will be developed using HTML5. APIs to use service -> -> function in IVI system from web applications is needed. Audio Visual API provides APIs for audio -> -> visual equipment control to web applications. (e.g. Media files on storage, CD, DVD, BT-Audio, -> -> Photo, etc.) -> -> Web applications use Audio Visual API to play audio visual contents on IVI system. Use case of -> -> Audio Visual API is shown in Figure 6-1. -> -> **Figure 6-1: Use case of Audio Visual API** -> -> **4.2.1.1 Requirements** -> -> Audio Visual API must provide API to select Audio Visual contents. -> -> · Select content using URL -> -> · -> Select content using contents list provided by multimedia subsystem -> -> Page 72 of 159 -> -> ![](media/picture182.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Audio Visual API must provide API to playback Audio Visual contents. (Media file on storage, CD, -> -> DVD, BT-Audio, Photo, etc.) -> -> · Play -> -> · Pause -> -> · Fast-forward -> -> · Rewind -> -> · Track up -> -> · Track down -> -> · Select playmode (Repeat/Random) -> -> Audio Visual API must provide API to control a volume. -> -> · Volume up -> -> · Volume down -> -> · Mute -> -> Audio Visual API must provide API for metadata access about Audio Visual contents. -> -> Audio Visual API must provide API for notifications. -> -> · The case that playback state is changed -> -> · The case that Audio Visual contents is add / removed -> -> Audio Visual API must provide API to play AM/FM radio. -> -> · Change the frequency. -> -> · Change the broadcasting stations. -> -> · Receive the list of broadcasting stations. -> -> · Select the preset channel. -> -> · Get the information of the broadcasting station. -> -> Audio Visual API must provide API to play digital radio. -> -> · Store the broadcast program information. -> -> Page 73 of 159 -> -> ![](media/picture183.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · Get the broadcast program information. -> -> · Get the play time. -> -> · Play the radio broadcast cached. -> -> AGL System must support a web API to access Vehicle information. -> -> AGL System must support web API to control STT/TTS daemon. -> -> AGL System must support web API to control navi engine. -> -> AGL System needs to provide a Web API to allow peer to peer communication between two web -> -> apps. -> -> AGL System needs to provide an API to allow peer to peer communication between a web app -> -> and a native app. -> -> AGL System must support access control over app to app communications. Service provider -> -> should be able to restrict subscriber. -> -> AGL System must support W3C/HTML5 DOM, Forms and Styles. -> -> AGL System must support W3C/HTML5 Device APIs: Touch Events, Device Orientation, -> -> Network Information -> -> AGL System must support W3C/HTML5 Graphics APIs: canvas, canvas 2D context, and SVG -> -> AGL System must support W3C/HTML5 Media: audio and video tags, user media and web audio -> -> AGL System must support W3C/HTML5 Communication APIs: websocket, web messaging, -> -> server sent events, session history of browsing context -> -> *AGL System must support W3C/HTML5 Storage APIs: Web storage, File, Database, Web S*QL -> -> Page 74 of 159 -> -> ![](media/picture184.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> AGL System must support W3C/HTML5 Security APIs: Cross-Origin Resource Sharing, HTML5 -> -> The iframe element, Content Security Policy 1.0. -> -> AGL System must support W3C/HTML5 UI APIs: Clipboard, DnD, Web Notifications -> -> AGL System must support W3C/HTML5 Performance APIs: Web workers, Page Visibility, Timing -> -> control, Navigation timing -> -> AGL System must support W3C/HTML5 Location API: Geolocation -> -> AGL System must support W3C/HTML5 Widget: Widget Packaging and XML Configuration, -> -> Widget Interface, XML Digital Signatures for Widgets, Widget Access Request Policy -> -> AGL System must support Khronos WebGL API. -> -> **4.2.2 Web Runtime** -> -> The Web Runtime module contains the bindings for the Web Application Framework to access -> -> the AGL Application Framework and Services. -> -> **4.2.2.1 Requirements** -> -> AGL system Web Runtime shall provide full web application lifecycle management (e.g., -> -> installation/removal). -> -> AGL System Web Runtime shall provide full execution environment for web apps (i.e., launch, -> -> view generation, rendering, etc.) -> -> AGL system Web Runtime shall provide a mechanism to implement plugins/extensions to add -> -> better device/platform integration. -> -> Page 75 of 159 -> -> ![](media/picture185.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> AGL system Web Runtime shall provide a mechanism to manage apps' access control and also to -> -> categorize apps with different privileges. -> -> System must provide high level GUI components for Web application. -> -> At least, below components are required. -> -> · Text labels -> -> · Button -> -> · Radio button -> -> · Check box -> -> · Tab panel -> -> · Animation (e.g. MNG, GIF animation) -> -> · Slider -> -> · Accordion list -> -> · Anchor -> -> · Text input form -> -> · Dropdown list box -> -> · Date picker -> -> 4.3 Native HMI -> -> The Native HMI provides an application framework for those applications that are not written -> -> using Javascript or other web technologies. -> -> **4.3.1 Native App Runtime** -> -> The Native Runtime module contains the bindings for the Native Application Framework to -> -> access the AGL Application Framework and Services. -> -> **4.3.1.1 Requirements** -> -> System must provide high level GUI components for native application. -> -> Page 76 of 159 -> -> ![](media/picture186.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> At least, below components are required. -> -> · Text labels -> -> · Button -> -> · Radio button -> -> · Check box -> -> · Tab panel -> -> · Animation (e.g. MNG, GIF animation) -> -> · Slider -> -> · Accordion list -> -> · Anchor -> -> · Text input form -> -> · Dropdown list box -> -> · Date picker -> -> **4.3.2 Native Application Framework** -> -> The platform can support multiple application frameworks any of which may be built into an -> -> SDK or product build. The application framework contains any code specifically written for that -> -> framework as well the bindings to the Services and Operating Systems layers that the -> -> application framework provides for its applications. -> -> **5 Services Layer** -> -> The Services Layer contains user space services that all applications can access. Generally the -> -> services provide either an IPC type interface or a subroutine/ function API. These interfaces -> -> remain the same for a given implementation and it is up to the Application Framework Runtime -> -> modules to provide access to these interfaces to the applications. Since we are trying to avoid -> -> unnecessary interface shims, it is not necessary for AGL to define standard service layer -> -> interfaces for a given module. Unless otherwise specified the API depends upon the interfaces -> -> provided by the open source packages chosen for a module. Different implementations may -> -> choose different packages for a given function and it is left to the Application Framework -> -> runtime to adjust to any new interfaces, -> -> Page 77 of 159 -> -> ![](media/picture187.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1 Platform Services -> -> Platform Services Layer. Conventional Linux platform services -> -> **5.1.1 Bluetooth** -> -> This document describes requirements regarding registration, (dis)connection and device -> -> information management between Bluetooth device and infotainment system. Necessary -> -> Bluetooth profiles in automotive use case are defined here. -> -> **5.1.1.1 Requirements** -> -> The Telephony system shall be designed to -> -> support a minimum of BT3.0+EDR, but shall be possible to upgrade to Bluetooth 4.0+EDR -> -> without hardware upgrade. -> -> A Bluetooth hands-free system shall provide the following BT profiles: -> -> · Core 2.0 + EDR inc. GAP (Generic Access Profile) -> -> · HFP (Hands Free Profile) -> -> · OBEX (Object Exchange) -> -> · OPP (Object Push Profile) -> -> · PBAP (Phonebook Access Profile) -> -> · SPP (Serial Port Profile) -> -> · SDAP (Service Discovery Access Profile) -> -> If the BT system is designed to operate with BT Media Players (E.g. control and stream music -> -> from), the system shall also support the following incremental BT profiles: -> -> · A2DP (Advanced Audio Distribution Profile) -> -> · AVRCP (Audio Visual Remote Control Profile) -> -> The link key shall be minimum 128 bits. The encryption key is negotiated and shall be set at the -> -> Page 78 of 159 -> -> ![](media/picture188.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> highest supported value by the remote device. The Telephony system shall be capable of -> -> generating up to 128-bit encryption key. The Telephony system will not be the limiting device in -> -> encryption key length negotiation. -> -> When implemented by the remote device Simple Secure Pairing 'Numeric comparison' method as -> -> default pairing mechanism. However when remote device is limited a configurable priority -> -> scheme will be adopted where the order of mechanisms will be determined at configuration -> -> time. -> -> The Telephony system shall provide Bluetooth Power Class 2. The operating range of Class 2 is -> -> 10 meters and maximum power is 2.5 mW (4 dBm). -> -> The Telephony system shall have provision for 1, 3 and 5-slot packet transmission. It shall -> -> allow using five-slot packet transmission for faster data rate. -> -> The Telephony system shall use IrMC standards as directed by the BT specification. It is a -> -> standard from IrDA, including IrOBEX for object exchange including vCards, vCalendars, etc. -> -> vCard is the electronic business card. It is used for Personal Data Interchange (PDI). vCards are -> -> often attached to e-mail messages, and can be exchanged on Instant Messaging. vCard contain -> -> name and address information, phone numbers, and e-mail addresses. -> -> vCard version 2.1 is widely adopted by e-mail clients. It contains FN, N, PHOTO, BDAY, ADR, -> -> LABEL, TEL, EMAIL, MAILER, TZ, GEO, TITLE, ROLE, Logo, Agent, ORG, NOTE, REV, SOUND, -> -> URL, UID, Version, and KEY properties. -> -> vCard version 3.0 is IETF standards format. It is defined in following two parts: -> -> MIME Content-Type for Directory Information -> -> vCard MIME Directory Profile -> -> It contains NICKNAME, CATEGORIES, PRODID, SORTSTRING and CLASS properties along with -> -> the vCard version 2.1 properties. -> -> The touch-screen or head unit HMI must have the ability to delete a Bluetooth device and any -> -> associated data (E.g. phonebook, voicemail number) when required, even if the BT device list is -> -> not full. -> -> The Telephony system shall use SCO link for voice data if eSCO link is not supported else eSCO -> -> Page 79 of 159 - - ------------------------------------------------------------------------------------------------------------- - > **No.** > **Feature** > **Support in HF** > **AGL** - ----------- ------------------------------------------------------------- ----------------------- ----------- - > 1 > Connection management > Mandatory > x - - > 2 > Phone status information > Mandatory > x - - > 3 > Audio Connection handling > Mandatory > x - - > 4 > Accept an incoming voice call > Mandatory > x - - > 5 > Reject an incoming voice call > Mandatory > x - - > 6 > Terminate a call > Mandatory > x - - > 7 > Audio Connection transfer during an ongoing call > Mandatory > x - - > 8 > Place a call with a phone number supplied by the > Option > x - > - > HF - - > 9 > Place a call using memory dialing > Option > - - - > 10 > Place a call to the last number dialed > Option > - - ------------------------------------------------------------------------------------------------------------- - -> ![](media/picture189.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> shall be used. -> -> 5.1.1.1.1 Hands Free Profile -> -> The Telephony system shall implement Hands-Free Profile (HFP) as per the hands-free Profile -> -> specification version 1.6 or later. -> -> The Telephony system shall enable a headset, or an embedded Hands-Free unit to connect, -> -> wirelessly, to a cellular phone for the purposes of acting as the cellular phone's audio input and -> -> output mechanism and allowing typical Telephony functions to be performed without access to -> -> the actual phone. -> -> It shall provide following roles: -> -> Hands-Free unit (HF) - - > 11 > Call waiting notification > Option > x - ------- ------------------------------------------------------ ---------- ---------- - > 12 > Three way calling > Option > x(\*1) - > 13 > Calling Line Identification (CLI) > Option > x - > 14 > Echo canceling (EC) and noise reduction (NR) > Option > x - > 15 > Voice recognition activation > Option > x - > 16 > Attach a Phone number to a voice tag > Option > - - > 17 > Ability to transmit DTMF codes > Option > x - > 18 > Remote audio volume control > Option > - - > 19 > Respond and Hold > Option > x - > 20 > Subscriber Number Information > Option > x - > 21a > Enhanced Call Status > Option > x - > 21b > Enhanced Call Controls > Option > - - > 22 > Individual Indicator Activation > Option > - - > 23 > Wide Band Speech > Option > x - > 24 > Codec Negotiation > Option > x - -> ![](media/picture190.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> \*1: Does not support Multi-party (conference) call -> -> The Telephony system shall be able to use the AT+CGMM query/response to determine the -> -> model of the phone over the HFP profile connection. Whatever is returned shall be stored as a -> -> string in a phone model CGMM variable. -> -> · Phone Model CGMM: -> -> · Type: string -> -> · Max length: 200 chars -> -> Page 81 of 159 -> -> ![](media/picture191.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · Persistence: No -> -> A property shall exist for each device which is connected to the system. -> -> The request shall be made each time a HFP Service Level Connection is established with the -> -> device. -> -> The Telephony system shall be able to use the AT+CGMI query/response to determine the -> -> Manufacturer of the phone over the HFP profile connection. Whatever is returned shall be -> -> stored as a string in a phone model CGMI variable. -> -> · Phone Model CGMI: -> -> · Type: string -> -> · Max length: 200 chars -> -> · Persistence: No -> -> A property shall exist for each device which is connected to the system. -> -> The request shall be made each time a HFP Service Level Connection is established with the -> -> device. -> -> The Telephony system shall be able to use the AT+CGMR query/response to determine the -> -> revision of the phone over the HFP profile connection. Whatever is returned shall be stored as a -> -> string in a phone model CGMR property. -> -> · Phone Model CGMR: -> -> · Type: string -> -> · Max length: 200 chars -> -> · Persistence: No -> -> A property shall exist for each device which is connected to the system. -> -> The request shall be made each time a HFP Service Level Connection is established with the -> -> device. -> -> 5.1.1.1.2 Advanced Audio Distribution Profile (A2DP) -> -> The Telephony system shall implement Advanced Audio Distribution Profile as per the A2DP -> -> specification version 1.2 or later. -> -> Page 82 of 159 - - > **No.** > **Codec** > **Support** > **AGL** - ----------- ------------------- --------------- ----------- - > 1 > SBC > Mandatory > x - > 2 > MPEG-1,2 Audio > Option > - - > 3 > MPEG-2,4 AAC > Option > - - > 4 > ATRAC family > Option > - - - > **No.** > **Feature** > **Support in SNK** > **AGL** - ----------- -------------------- ------------------------ ----------- - > 1 > Audio Streaming > Mandatory > x - -> ![](media/picture192.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> The Telephony system shall use this profile for audio streaming. This profile shall be use to -> -> realize distribution of audio content of high-quality in mono or stereo on ACL channels. -> -> It shall provide following roles: -> -> Sink (SNK) - A device is the SNK when it acts as a sink of a digital audio stream delivered from -> -> the SRC on the same piconet. -> -> Items marked with "x" in AGL column in Table 20 should be supported. -> -> Decode functions of codec marked with "x" in AGL column in Table 21 should be supported. -> -> Copyright protection technology SCMS-T should be supported. -> -> 5.1.1.1.3 Phone Book Access Profile -> -> Page 83 of 159 -> -> ![](media/picture193.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> The Telephony system shall implement Phonebook Access Profile as per the PBAP specification -> -> version 1.1 or later. -> -> The Telephony system shall use this profile to allow exchange of Phonebook Objects between -> -> devices. -> -> Phonebook is automatically downloaded into the system from mobile device for browsing. The -> -> Telephony system shall store user's Phonebook and the Phonebook details of the connected -> -> device shall be available to the user. The Telephony system shall manage the contacts by, listing -> -> and copying contact information. -> -> It shall provide following roles: -> -> · Phonebook Client Equipment (PCE) -> -> It shall provide following types of Phonebook objects: -> -> · The main Phonebook object -> -> · The Incoming Call History object -> -> · The Outgoing Call History object -> -> · The Missed Call History object -> -> · The Combined Call History object -> -> A Bluetooth hands-free system must download the phonebook from the connected BT device -> -> automatically if the BT device has provision for the transfer of phonebook data. The Phonebook -> -> download shall be performed by any one of the following methods listed in priority of usage: -> -> · Using PBAP profile -> -> All the BT device's phonebook entries must be transferred - those on any external memory (E.g. -> -> SIM) and also any stored in the BT device's memory. -> -> The number type data (if stored with the contact) shall also be transferred and stored in the -> -> vehicle phonebook. The Phonebook shall be associated to only the BT device it was downloaded -> -> from. -> -> 5.1.1.1.4 Dial Up Networking (DUN) Profile -> -> Dial-Up Networking Profile (DUN) has to be supported as well as Profiles/Protocols for -> -> necessary lower layers. -> -> Page 84 of 159 - - > **No.** > **Service** > **Support in DT** > **AGL** - ----------- ------------------------------------------- ----------------------- ----------- - > 1 > Data call without audio feedback > Mandatory > x - > 2 > Data call with audio feedback > Option > - - > 3 > Fax services without audio feedback > N/A > - - > 4 > Fax services with audio feedback > N/A > - - > 5 > Voice call > N/A > - - > 6 > Incoming calls > Option > x - > 7 > Outgoing calls > Mandatory > x - -> ![](media/picture194.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It has to comply with the specification for “Data Terminal (DT)” -> -> Items marked with "x" in AGL column in Table 23 should be supported. -> -> 5.1.1.1.5 Object Push Profile (OPP) -> -> Object Push Profile (OPP) has to be supported as well as Profiles/Protocols for necessary lower -> -> layers. -> -> It has to comply with the specification for “Push Server”. -> -> Items marked with "x" in AGL column in Table 24 should be supported. -> -> **Table 24 : List of OPP Push Server Supporting Functions** -> -> Page 85 of 159 - - > **No.** > **Feature** > **Support in CT** > **AGL** - ----------- -------------------------------------------- ----------------------- ----------- - > 1 > Connection establishment for control > Mandatory > x - > 2 > Release connection for control > Mandatory > x - > 3 > Connection establishment for browsing > C6 > x - - ------------------------------------------------------------------------------------- - > **No** > **Feature** > **Support in Push Server** > **AGL** - > - > **.** - ---------- ---------------------------- --------------------------------- ----------- - > 1 > Object Push > Mandatory > x - - > 2 > Business Card Pull > Option > - - - > 3 > Business Card Exchange > Option > - - ------------------------------------------------------------------------------------- - -> ![](media/picture195.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1.1.1.6 Audio/Video Remote Control Profile (AVRCP) -> -> The System shall implement Audio / Video Remote Control Profile version 1.6. -> -> The system shall use this profile for audio streaming control for each connected media device -> -> plus one remote control.. -> -> The system must comply with the specification for Controller (CT) items marked with "x" in AGL -> -> column in Table 25 should be supported. -> -> C2: Mandatory if device supports Metadata Attributes for Current Media Item or optional -> -> otherwise -> -> C3: Mandatory to support at least one Category -> -> C4: Mandatory if Category 2 supported, excluded otherwise -> -> C6: Mandatory if Browsing (item 18) is supported, optional otherwise -> -> EX: Excluded -> -> Page 86 of 159 -> -> ![](media/picture196.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 4 Release connection for browsing C6 x -> -> 5 AV/C Info commands Option x -> -> 6 Category 1: Player/Recorder C3 x -> -> 7 Category 2: Monitor/Amplifier C3 - -> -> 8 Category 3: Tuner C3 - -> -> 9 Category 4: Menu C3 - -> -> 10 Capabilities Option x -> -> 11 Player Application Settings Option x -> -> 12 Metadata Attributes for Current Media Item Option x -> -> 13 Notifications C2 x -> -> 14 Continuation C2 x -> -> 15 Basic Group Navigation Option x -> -> 16 Absolute Volume C4 - -> -> 17 Media Player Selection Option x -> -> 17.1 - Supports Multiple Players Option x -> -> 18 Browsing Option x -> -> 18.1 - Database Aware Players Option x -> -> 19 Search Option - -> -> 20 Now Playing C6 x -> -> 20.1 - Playable Folders Option x -> -> 21 Error Response EX - -> -> 22 PASSTHROUGH operation supporting press and Option x -> -> Page 87 of 159 - - ------------------------------------------------------------------------------ - > **No** > **Feature** > **Support by the MCE** > **AGL** - > - > **.** - ---------- ------------------------- ----------------------------- ----------- - > 1 > Message Notification > C1 > x - - > 2 > Message Browsing > C1 > x - - > 3 > Message Uploading > Option > x - - > 4 > Message Delete > Option > - - - > 5 > Notification > C2 > x - > - > Registration - ------------------------------------------------------------------------------ - -> ![](media/picture197.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> hold -> -> The AVRCP profile realisation shall implement an Inform Battery Status of CT parameter and -> -> pass this information up to so it can be passed to the User. -> -> 5.1.1.1.7 Message Access Profile -> -> Message Access Profile (MAP) has to be supported as well as Profiles/Protocols for necessary -> -> lower layers. -> -> It has to comply with the specification for “Message Client Equipment (MCE)”. -> -> Items marked with "x" in AGL column in Table 26 should be supported. -> -> C1: The MCE to support at least one of the C1-labelled features -> -> C2: The MCE shall support Message Notification Registration if it supports Message -> -> Notification. Not applicable otherwise. -> -> Page 88 of 159 - - > **No.** > **Feature** > **Support in PANU** > **AGL** - ----------- ------------------------------------------ ------------------------- ----------- - > 1 > Initialization of NAP/GN service > - > - - > 2 > Shutdown of NAP/GN service > - > - - > 3 > Establish NAP/GN service Connection > Mandatory > x - -> ![](media/picture198.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1.1.1.8 Serial Port Profile (SPP) -> -> The Telephony system shall implement Serial Port Profile as per the SPP specification version -> -> 1.1 or later. -> -> It shall provide following roles: -> -> Initiator - This is the device that takes initiative to form a connection to another device. -> -> Acceptor - This is the device that waits for another device to take initiative to connect. -> -> Following features shall be provided by the Supplier: -> -> Establish link and setup virtual serial connection -> -> Accept link and establish virtual serial connection -> -> Register Service record for application in local SDP database -> -> 5.1.1.1.9 Personal Area Network (PAN) Profile -> -> Personal Area Network Profile (PAN) has to be supported as well as Profiles/Protocols for -> -> necessary lower layers. -> -> It has to comply with the specification for “PAN User (PANU)”. -> -> Items marked with "x" in AGL column in Table 27 should be supported. -> -> Page 89 of 159 - - > 4 > Lost NAP/GN Service Connection > Mandatory > x - ----- ------------------------------------------- ------------- ----- - > 5 > Disconnect NAP/GN Service Connection > Mandatory > x - > 6 > Management Information Base (MIB) > - > - - -> ![](media/picture199.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1.1.1.10 Service Discovery Profile (SDP) -> -> The Telephony system shall implement Service Discovery Application Profile as per the SDAP -> -> specification version 1.1. -> -> The Telephony system shall use this profile to locate services that are available on or via devices -> -> in the vicinity of a Bluetooth enabled device. -> -> It shall provide following roles: -> -> Local Device - A device that initiates the service discovery procedure. -> -> Remote Devices(S) - A device that participates in the service discovery process by responding to -> -> the service inquiries generated by Local Device. -> -> The following features shall be provided by the Supplier: -> -> Search for services by service class -> -> Search for services by service attributes -> -> Service browsing -> -> 5.1.1.1.11 Device Information Profile -> -> Device Identification Profile (DIP) has to be supported as well as Profiles/Protocols for -> -> necessary lower layers. -> -> Items marked with "x" in AGL column in Table 28 should be supported. -> -> **Table 28 : List of DIP Supporting Functions** -> -> Page 90 of 159 - - > **No.** > **Feature** > **Support** > **AGL** - ----------- ----------------------- --------------- ----------- - > 1 > SpecificationID > Mandatory > x - > 2 > VendorID > Mandatory > x - > 3 > ProductID > Mandatory > x - > 4 > Version > Mandatory > x - > 5 > PrimaryRecord > Mandatory > x - > 6 > VendorIDSource > Mandatory > x - > 7 > ClientExecutableURL > - > - - > 8 > ServiceDescription > - > - - > 9 > DocumentationURL > - > - - -> ![](media/picture200.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1.1.1.12 Bluetooth Smart Ready -> -> Bluetooth Smart Ready shall be supported. -> -> It shall comply with Bluetooth Low Energy standard. -> -> 5.1.1.1.13 Generic Object Exchange Profile (GOEP) -> -> The Telephony system shall implement Generic Object Exchange Profile as per the GOEX -> -> specification version 2.0 or later. -> -> The Telephony system shall use this profile to facilitate the exchange of binary objects between -> -> devices. The usage model shall be Synchronization, File Transfer or Object Push model. -> -> It shall provide following roles: -> -> Server - This is the device that provides an object exchange server to and from which data -> -> objects shall be pushed and pulled, respectively. -> -> Page 91 of 159 -> -> ![](media/picture201.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Client - This is the device that can push or/and pull data object(s) to and from the Server. -> -> The following features shall be provided by the Supplier: -> -> Establishing an object connection -> -> Pushing a data object -> -> Pulling a data object -> -> Performing an action on data objects -> -> Creating and managing a Reliable Object Exchange Connection -> -> 5.1.1.1.14 Generic Audio/Video Distribution Profile -> -> The Telephony system shall implement Generic Audio/Video Distribution Profile as per the -> -> GAVDP specification version 1.2 or later. -> -> The Telephony system shall use this profile to specify signalling transaction procedures between -> -> two devices to set up, terminate, and reconfigure streaming channels. -> -> It shall provide following roles: -> -> Initiator (INT) -> -> Acceptor (ACP) -> -> Following are the feature requirements for this profile: -> -> Connection -> -> Transfer Control -> -> Signalling Control -> -> Security Control -> -> Note: This profile is currently being enhanced to version 1.3. Release date of this version is not -> -> yet finalized. The Telephony system shall be able to upgrade to the newer version in the future. -> -> 5.1.1.1.15 Bluetooth Diagnostics -> -> **5.1.2 Error Management** -> -> The Error Management module provides platform error handling mechanisms. This includes -> -> Page 92 of 159 -> -> ![](media/picture202.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> detecting system errors that occur after start up to provide a recovery function by localized -> -> restart. In addition, -> -> in case of a broad ranged malfunction, Error Management provide quick detection and recovery -> -> to issue in a short amount of time. -> -> **5.1.2.1 Use Cases** -> -> 5.1.2.1.1 System Surveillance and Recovery -> -> While using in-car information device, if the whole system or part of the function stops, an -> -> immediate error detection and automatic recovery will be needed. For example, when updating -> -> the screen while route guidance is on or voice recognition cannot be used, restart the function to -> -> try and recover. When an error occurs in the core of a system such as an output communicating -> -> middle ware, reboot the whole system to try and recover. -> -> There are several supposed cases for system surveillance such as a case where the system that -> -> adopted AGL and monitors by itself or monitored by the system that has not adopted AGL. The -> -> AGL Error Management scope includes parts of the system that adopted AGL. -> -> The way of recovery has to be assessed by the status of the system behavior. For example, even -> -> if the way to recover the car navigation error might be reboot, the system reboot should not be -> -> done when the car navigation is displaying back camera image. Because of these use cases, Error -> -> Management should focus on the degree of importance for surveillance list process and the -> -> degree should be adjusted by its behavior status. -> -> 5.1.2.1.2 Collecting Information -> -> For when the system failure occurred after the launch, the most urgent item is a prompt -> -> recovery but what is also a point that is worth noting is to collect the information to specify the -> -> cause for its failure. Therefore, gathering information with the minimum recovery time is needed. -> -> With Linux system, memory image dump (core dump) of generally abended process is used. On -> -> the other hand, a scale of middleware which is an in- car application is increasing and has come -> -> Page 93 of 159 -> -> ![](media/picture203.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> to the point where the time to dump the entire memory image is impermissible. To avoid this, -> -> the Error Management function will provide the system to leave the light log. -> -> **5.1.2.2 Requirements** -> -> Prevent the system failure shutoff and also in case of failure provided the function that judge its -> -> status automatically and recover -> -> The Error Management module should support both surveillance of the whole system and each -> -> process. -> -> The Error Management module should monitor the memory usage of whole system cyclically. -> -> When memory usage exceeds set threshold value, a set action should be done. Cycle, threshold -> -> value, action is changeable by AGL user. -> -> Kernel function that requires Error Management surveillance, driver has to send a notification -> -> to Error Management when an error occurs. The subjects that sends error notifications are -> -> output communication or disk I/O. -> -> Error Management should be able to execute the action after obtaining the error notification -> -> by kernel function and the driver. Action should be changeable by AGL user. For example, an -> -> error for CAN communication is critical so system restart could be done but USB communication -> -> error can be ignored since it may be caused by a compatibility issue between devices. -> -> Error Management should monitor processes for existence or non-existence, when abended it -> -> should execute a set action. The set action should be changeable by the AGL user. Termination -> -> of resident process is a defect but termination of a temporal behaving process is correct so -> -> those two should be able to set separately. -> -> Error Management should monitor the process with a set cycle and when it goes over threshold -> -> value, should be able to execute the set action. Cycle, threshold value, action should be -> -> changeable by AGL user. The subjects of surveillance are CPU usage and memory usage. -> -> Should be able to vanish process forcibly including subsidiary process -> -> Page 94 of 159 -> -> ![](media/picture204.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Make the software that works by system have the concept of level importance. -> -> Appropriate recovery depending on the level of importance. The level of importance should be -> -> adjustable depending on the status of operation by coordinating with Policy. -> -> The process that detecting an external communication error within the Error Management -> -> module and recovering has to be set to complete before external monitoring detects. -> -> The application that is monitored by the Error Management modulehas to be independent as -> -> more than one process. -> -> The application that is monitored by the Error Management moduleshould not combine multiple -> -> applications to one process. Application’s runtime part does not have the structure where -> -> multiple applications can be moved by the same process. -> -> Service providing side has to be nondense to the application. For example, the Service providing -> -> process such as a software keyboard should not go wrong with the state of App. Such as -> -> process crash, exit, etc.. -> -> An application has to be nondense to an application. When linking two application one ends -> -> suddenly the other will not become abnormal state. -> -> The process that communicates with the external system has to be independent from the other -> -> process while recovering that does not include system restart so that it can notify alive towards -> -> external side. -> -> When the software that is under the surveillance of RAS can not recover with one restart -> -> additional process can be done such as deleting the subject files that were registered -> -> beforehand. -> -> The system has to have a structure where overwrite the files that are stored in a pinned file -> -> system without destroying them. -> -> Page 95 of 159 -> -> ![](media/picture205.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> When system down occurs (kernel panic), should be able to collect the information need for -> -> analyzing. -> -> When making the system down happen intentionally( BUG\_ON etc.),make sure to leave a -> -> message that can specify the cause. -> -> Both the log which is for debug and can take time to output and the log that leaves minimum log -> -> in a short period of time have been equipped and able to select. -> -> In any abnormal cases log output does not lock the system (stand by for spin lock etc.) or -> -> system down does not occur (self-destruction on log output process). -> -> Should be able to leave the aberrance occurred in kernel area on the log. -> -> Should be able to select the level of log output. -> -> Should be able to record the aberrance log with the time of occurrence. -> -> Should be able to obtain the information linked to the system resources. -> -> Should be able to leave the information corresponding to core dump in a short period of time. -> -> Both the log which is for debug and can take time to output and the log that leaves minimum log -> -> in a short period of time have been equipped and able to select. -> -> As the smallest amount of information, the following information should be left. -> -> · Register information -> -> · Process logical memory map -> -> · -> Stack dump or back trace from the exceptional place of occurrence -> -> · Time of occurrence -> -> · -> Information that can specify the occurred process thread (name of an executing -> -> file‑name of the thread etc.) -> -> Page 96 of 159 -> -> ![](media/picture206.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · The signal that occurred -> -> Lightweight core dump is a core dump that can set the restrictions below. -> -> · -> Select the memory mapping category of process executing memory image that targeted -> -> for an output. -> -> · -> Specify the order of an output and output high-priority memory mapping first to prevent -> -> dropping the information needed. -> -> · -> Output only the memory mapping that is linked to the abnormal process (text area). \[O\] -> -> · -> Compress the data for each memory mapping category and output up to the fixed -> -> maximum size. -> -> · -> NOTE information of ELF header and program header will not change. -> -> Selectable memory mappings are the following. -> -> · anonymous private mappings -> -> · anonymous shared mappings -> -> · file-backed private mappings -> -> · file-backed shared mappings -> -> · private huge page -> -> · shared huge page -> -> Setting parameters of the output context are the following. -> -> · -> Memory mapping category which is for an output object can be set. -> -> · The order of outputting memory mapping can be set. -> -> Should be able to leave the log in increments of process. Possible to filter and have a look in -> -> increments of process. -> -> Should be able to leave a trace log in increments of process during process crash. Should be -> -> able to leave a trace log in increments of process during system running, if necessary. -> -> Should be able to obtain the information related to system resource of process. -> -> Page 97 of 159 -> -> ![](media/picture207.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> There should be a structure to be able to error trace among the whole process in a user space. -> -> **5.1.3 Graphics** -> -> Graphics subsystem; HMI input, wayland, windowing, etc. -> -> **5.1.4 Location Services** -> -> Location services includes support for GPS, location, and positioning services including dead -> -> reckoning. Time of day support is also included in Location Services since time is a primary -> -> output of the GPS receiver. -> -> **5.1.4.1 Position** -> -> **5.1.4.2 Time of Day** -> -> With Linux, time adjusting is generally done by using date command or NTP but since in-car -> -> device can obtain the accurate time from GPS, GPS time is often used as Abs Time. Because of -> -> its advantage where this GPS demand can be done anywhere in the world, it would continue in -> -> future. Therefore, we are going to need a structure for adjusting the Linux system time. -> -> **Monotonic and Absolute Time Support** -> -> As a weak point of GPS, when cold start, it takes a long time to obtain the accurate time. -> -> Because of this, it will not set the right time for booting the system and will adjust it while it’s -> -> moving. As for in-car device, the demand to make the system boot faster is rather strong and -> -> Abs Time can vary while it’s working for one of the middle ware applications. -> -> On the other hand, although POSIX API which is used as a standard for Linux, provides the time -> -> that has not been effected by the adjusting in case of a simple latency, but for resource latency, -> -> some of them can only set with Abs Time. Therefore, in-car Linux needs an API that supports -> -> Monotonic Time. -> -> **Kernel Time Precision** -> -> Page 98 of 159 -> -> ![](media/picture208.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> In-car device needs to support all kinds of communicating system such as CAN. Those -> -> communicating system includes the device that needs ms order procedure. -> -> In Linux Kernel space, jiffies are used as mere time. However 1jiffies time differs depending on -> -> the CPU architecture and the architecture differs depending on SOC. Because of this, the lowest -> -> value for unit of time that AGL environment has to support needs to be decided. -> -> **5.1.4.3 Requirements** -> -> Should be able to adjust the system time from GPS middle ware. -> -> Adjust the system time after the time is determinate. -> -> GPS middle ware has to have the system where it can implement GPS driver control parts using -> -> the plugin (source plugin). Must tolerate proprietary GPS component. -> -> GPS middle source plugin must tolerate proprietary. Source plugin has to be a license that is not -> -> imposed a duty to open source. For example, header library’s license that is needed to make -> -> Source plugin can not be GPL or LGPL. -> -> When waiting, can use both absolute time and monotonic time -> -> Resource obtaining time out such as mutex, semaphore can use both absolute time and -> -> monotonic time. -> -> Resource obtaining time out such as mutex, semaphore can use both absolute time and -> -> monotonic time. -> -> System time must be able to use consecutively at least until 2099. -> -> Absolute time has to support leap year and leap seconds. -> -> 1 jiffies have to be smaller than 1ms. -> -> Page 99 of 159 -> -> ![](media/picture209.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Time waiting that involve context switch, must be done with the accuracy over 1ms. -> -> From timer / ISR, can boot tasklet with the accuracy 1ms. -> -> A system has to be able to handle time with at least the accuracy 1ms. -> -> **5.1.5 Health Monitoring** -> -> Platform monitoring services such as watchdog or active monitoring -> -> **5.1.6 IPC** -> -> Standard platform interprocess and interprocessor communication mechanism. -> -> **5.1.7 Lifecycle Management** -> -> Startup, shutdown, state change, etc. -> -> **5.1.8 Network Services** -> -> Includes standard networking protocols such as TCP/IP via any networking physical layer -> -> including Wifi, Bluetooth, or ethernet. -> -> **5.1.9 Persistent Storage** -> -> Power safe persistent storage -> -> **5.1.10 Power Management** -> -> Amount of ECUs in the car and their complexity has grown dramatically over last decade. Needs -> -> in processing power are constantly growing to catch up with demands of automotive industry. -> -> *This, in turn has impact on power budget and temperature/heat dissipation characteristic of* -> -> Page 100 of 159 -> -> ![](media/picture210.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> modern ECUs -> -> In parallel, success of green, electric cars is pushing power budget limits down as never before, -> -> in distant future we may see “battle for watts” in automotive electronics. Finding optimal -> -> balance between performance and ECU operating modes, frequencies, voltages is also important -> -> for overall durability characteristic. -> -> Suspend/resume techniques and retention of the ECU in lower power states now becoming -> -> more welcomed over traditional cold boot approaches. -> -> Linux community has been working on power management architecture for many years, it has -> -> become a state of art framework and set of components that addresses needs not only -> -> consumer electronics industry, but also industrial automation, security, etc.) -> -> **5.1.10.1 Requirements** -> -> AGL kernel shall allow switching between active and suspend states. Exact definition of suspend -> -> states is platform/architecture-specific (e.g. “suspend to memory”, “suspend to disk” -> -> /“hibernate” correspond to S3 and S4 in ACPI terminology) -> -> Kernel and peripheral device drivers shall not be affected by suspend/resume transitions. -> -> AGL kernel shall provide sufficient APIs for application to control active/suspend state -> -> transitions and receive appropriate events/notifications. Kernel should not initiate power state -> -> transitions if no requests provided from applications. -> -> Detailed definition of steps/actions required for suspend/resume sequence is out of the scope of -> -> this specification (it is also platform-dependent). -> -> AGL kernel for SMP configurations shall allow enabling/disabling of individual cores (or group of -> -> cores) (NOTE: on some platforms/architectures enabling/disabling may be achieved by putting -> -> core in one of its low power states) -> -> AGL kernel shall only provide mechanism for applications to request enabling/disabling particular -> -> cores from SMP group. -> -> Page 101 of 159 -> -> ![](media/picture211.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> AGL kernel shall support CPU frequency and voltage scaling. Exact definition of operating points -> -> (table of frequencies/voltages allowed by hardware) is platform/architecture-specific (moreover, -> -> some of operating points may be omitted/ignored in AGL kernel as their impact on power budget -> -> insignificant) -> -> Kernel and peripheral device drivers shall not be affected by CPU frequency and voltage scaling -> -> Only application-defined policies shall be allowed for CPU frequency and voltage scaling. -> -> Default in-kernel governors/policies (e.g. on-demand or performance) shall not be used and they -> -> may have negative impact on overall system performance/predictability -> -> AGL kernel shall allow switching between active and idle states. Exact definition of idle states is -> -> platform/architecture-specific (e.g. C0..C4 in ACPI terminology or WFI+… for ARM) -> -> Kernel and peripheral device drivers shall not be affected entering/leaving one of idle states -> -> Only application-defined policies shall be allowed for CPU Idle -> -> AGL kernel shall support run-time power management of I/O (peripheral) devices -> -> AGL kernel shall support I/O (peripheral) device voltage and frequency scaling -> -> **5.1.11 Resource Management** -> -> Resource and device management. -> -> Resource Management shall provide an interface to be used for informing status of a resource -> -> request by the Resource Manager. -> -> **5.1.12 Telephony Services** -> -> **5.1.12.1 Requirements** -> -> Page 102 of 159 -> -> ![](media/picture212.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1.12.1.1 Telephony variants -> -> Purpose: To define the variants of Telephony -> -> Requirement: -> -> There will be 2 variants of phone system. -> -> Variant 1: Front User only Telephony. -> -> Variant 2: Rear and Front Telephony. -> -> All variants will have Bluetooth capability. The feature will be configurable so that the feature -> -> can be disabled via car configuration. -> -> **5.1.13 Wi-Fi** -> -> This Wi-Fi subsystem controls registration, connection management, and device information -> -> management between a wireless LAN device and infotainment system. -> -> Necessary Wi-Fi specification in automotive use case is defined here. -> -> **5.1.13.1 Use Cases** -> -> 5.1.13.1.1 Construct WiFi Network -> -> In-Vehicle Infotainment systems constructs 3 types of Wi-Fi networks. -> -> a\. STA -> -> In-Vehicle Infotainment system acts as a STA (Station) and connects to an external network via -> -> an Access Point. -> -> It also connects to Access Points which support Wi-Fi Hotspot. -> -> b\. AP -> -> In-Vehicle Infotainment system acts as an AP (Access Point) and connects multiple Wi-Fi devices -> -> with an external network. -> -> Page 103 of 159 -> -> ![](media/picture213.jpeg)![](media/picture214.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It also connects Wi-Fi devices which support Wi-Fi Hotspot. -> -> c\. P2P -> -> In-Vehicle Infotainment system and Wi-Fi device makes P2P (Peer to Peer) connection using Wi- -> -> Fi Direct. -> -> 5.1.13.1.2 Miracast -> -> In-Vehicle Infotainment system and Wi-Fi device shares a display using Miracast.-(a) -> -> They are also remotely operated to a Wi-Fi device from the infotainment system, or vice versa, -> -> by using UIBC (User Interface Back Channel).-(b) -> -> **Figure 8-29 : Overview of Miracast** -> -> a\. Shared Displayed Content -> -> Page 104 of 159 -> -> ![](media/picture215.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Use case examples of shared displayed content are: -> -> · -> A passenger on the passenger seat views the multimedia content played on Wi-Fi Device -> -> (e.g. Mobile) on In-Vehicle Infotainment system. -> -> · -> A rear seat passenger views the multimedia content played on In-Vehicle Infotainment -> -> system on Wi-Fi Device(e.g. Rear seat monitor). -> -> b\. Remote Operation -> -> Use case examples of remote operation are: -> -> · -> A passenger on the passenger seat plays the multimedia content stored in Wi-Fi Device -> -> (e.g. Mobile) by operating In-Vehicle Infotainment system. -> -> · -> A passenger on the rear seat controls air conditioner functionality in In-Vehicle -> -> Infotainment system by operating a Wi-Fi Device (e.g. Mobile). -> -> · -> While the vehicle is in motion, a passenger on the rear seat controls the navigation -> -> functionality in a passenger on the rear seat controls by operating a Wi-Fi Device(e.g. -> -> Mobile). -> -> 5.1.13.1.3 DLNA -> -> In-Vehicle Infotainment system connects with a DLNA device via Wi-Fi. -> -> **5.1.13.2 Requirements** -> -> 5.1.13.2.1 Security -> -> The WiFi module shall support security standard WEP. -> -> It shall support 40 bit WEP encryption method. -> -> It shall support 104 bit WEP encryption method. -> -> It shall support security standard WPA Personal. -> -> Page 105 of 159 -> -> ![](media/picture216.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It shall support TKIP encryption method. -> -> It shall support CCMP encryption method. -> -> It shall support security standard WPA2 Personal. -> -> It shall support TKIP encryption method. -> -> It shall support CCMP encryption method. -> -> It shall support security standard WPA Enterprise. -> -> It shall support TKIP encryption method. -> -> It shall support CCMP encryption method. -> -> It shall support security standard WPA2 Enterprise. -> -> It shall support TKIP encryption method. -> -> It shall support CCMP encryption method. -> -> 5.1.13.2.2 Simple Configuration -> -> It shall comply with WPS (Wi-Fi Protected Setup) standard. -> -> It shall be able to perform connection with PIN (Personal Identification Number) method. -> -> It shall support Configuration Method for Display. -> -> Page 106 of 159 -> -> ![](media/picture217.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It shall support Configuration Method for Keypad. -> -> It shall be able to perform connection with PBC (Push button configuration) method. -> -> It shall support Configuration Method for PushButton. -> -> It shall be able to perform connection with NFC (Near Field Communication) method. -> -> 5.1.13.2.3 QoS -> -> It shall comply with WMM (Wi-Fi Multimedia) standard. -> -> It shall comply with WMM-PS (Wireless Multimedia Power Save) standard. -> -> 5.1.13.2.4 STA -> -> The In-Vehicle system shall be able to function as a STA (Non-AP Station). -> -> 5.1.13.2.5 AP -> -> The In-Vehicle system shall be able to function as an AP (Access Point). -> -> 5.1.13.2.6 WiFi Direct -> -> It shall comply with Wi-Fi Direct standard. -> -> It shall support the WiFi Direct functions as listed in Table 29. -> -> Page 107 of 159 - - -------------------------------------------------------------------------------------------------------------------- - > **No.** > **Feature** > **(Reference)** - > - > **Support in Wi-** - > - > **Fi Direct** - ----------- ---------------------------------------------------- -------------------------- ------------------------ - > 1 > P2P Provision > ‑ > Mandatory - > - > Discovery - - > 2 > P2P Device Discovery > Scan Phase > Mandatory - - > 3 > ‑ > Find Phase > Mandatory - - > 4 > P2P GO Negotiation > ‑ > Mandatory - - > 5 > P2P Service Discovery > ‑ > Option - - > 6 > P2P Invitation > Temporary P2P Group > Option - - > 7 > ‑ > Persistent P2P Group > Option - - > 8 > Persistent P2P Group / Persistent Reconnect > Option - - > 9 > Intra-BSS Distribution > ‑ > Option - - > 10 > Concurrent Operation > ‑ > Option - - > 11 > P2P Service Discovery > UPnP > Option - - > 12 > ‑ > Bonjour > Option - - > 13 > ‑ > Wi-Fi Display > Option - - > 14 > ‑ > WS-Discovery > Option - - > 15 > ‑ > Vendor specific > Option - -------------------------------------------------------------------------------------------------------------------- - -> ![](media/picture218.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1.13.2.7 Miracast -> -> Page 108 of 159 - - -------------------------------------------------------------------------------------------------------------- - > ‑**No.** > **Feature** > ‑ > **(Refere** - > - > **nce)** - > - > **Suppor** - > - > **t in** - > - > **Miracas** - > - > **t** - ------------ ----------------------------------------------------- ----------------------- ------------------- - > 1 > WFD Device type > WFD Source > Mandat - > - > ory - - > 2 > ‑ > Primary Sink > Mandat - > - > ory - - > 3 > ‑ > Dual-role possible > Option - - > 4 > WFD Service > ‑ > Option - > - > Discovery - - > 5 > WFD connection establishment with Wi-Fi P2P > Mandat - > - > ory - - > 6 > WFD connection establishment with Wi-Fi TDLS > Option - - > 7 > Persistent WFD > via Wi-Fi P2P > Option - > - > Group - - > 8 > ‑ > via TDLS > Option - - > 9 > WFD Capability Negotiation (RTSP) > Mandat - > - > ory - - > 10 > WFD Session Establishment (RTSP) > Mandat - > - > ory - -------------------------------------------------------------------------------------------------------------- - -> ![](media/picture219.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It shall comply with Miracast standard. -> -> It shall support the Miracast functions identified in Table 30. -> -> Page 109 of 159 - - --------------------------------------------------------------------------------- - > 11 > AV Streaming and Control (MPEG-TS/RTP/RTSP) > Mandat - > - > ory - ------ --------------------------------------------------- ----------- ---------- - > 12 > WFD Standby (RTP/RTSP) > Option - - > 13 > Video CODEC formats > Option - - > 14 > Audio CODEC formats > Option - - > 15 > UIBC > Generic - - > 16 > HIDC - --------------------------------------------------------------------------------- - -> ![](media/picture220.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.1.13.2.8 WiFi Hotspot -> -> It shall comply with Wi-Fi Hotspot standard. -> -> In-Vehicle system which acts as an a STA(Non-AP Station)shall be able to connect with Hotspot -> -> service. -> -> In-Vehicle system which acts as an AP (Access Point) shall be able to provide Hotspot service. -> -> 5.1.13.2.9 DLNA via WiFi -> -> The In-Vehicle system shall be able to connect with DLNA devices via Wi-Fi. -> -> **5.1.14 Window System** -> -> A window system is a software component that facilitates an implementation of graphical user -> -> interface. A window system is responsible for managing display devices, Graphics Processing -> -> Units (GPUs), input devices, and graphics memory. A window system works with the software -> -> component named window manager that is responsible for a layout management of windows, -> -> and a routing of user interactions. -> -> Page 110 of 159 -> -> ![](media/picture221.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.2 Automotive Services -> -> Automotive Services Layer contains services that are not found in a typical Linux distribution but -> -> contains services specialized for automotive applications. -> -> **5.2.1 Audio Services** -> -> BTBF, equilization, mult-zone audio control, etc. -> -> **5.2.2 Camera Services** -> -> Standard interface to vehicle mounted cameras; backup camera, side and front cameras, etc. -> -> **5.2.3 Configuration Services** -> -> Service for storing configuration parameters. -> -> **5.2.4 Diagnostic Services** -> -> Diagnostic services. -> -> (This is automotive diagnostics such as storing and retrieving DTC. ) -> -> **5.2.5 Multimedia Services** -> -> CD, DVD, Blu-Ray, MP3, etc. -> -> (Factor out metadata into separate component.) -> -> **5.2.5.1 Media Player** -> -> In-vehicle multimedia system shall provide rich and robust user-experience that includes not just -> -> Page 111 of 159 -> -> ![](media/picture222.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> support of multiple audio-video formats, but also variety of input and output audio/video -> -> devices, both static and dynamically pluggable. In contrast to mobile or desktop applications, -> -> there is normally more than one consumer of multimedia content in a car, with front- and rear- -> -> seat passengers as well as driver all having independent requirements. -> -> The following requirements are considered essential for in-vehicle multimedia system: -> -> · -> Supported multimedia formats shall correspond to major end-user expectations, i.e. the -> -> ones encountered in mobile and desktop world. -> -> · -> Multiple audio / video sources and sinks, both static (i.e. always existing in the system) -> -> and dynamic (i.e. appearing and disappearing when user connects a Bluetooth headset or -> -> establishes a network connection.) -> -> · -> Multiple independent consumers of multimedia data and globally configurable routing of -> -> audio / video processing chains. -> -> Latency requirements of audio/video processing may also vary depending on a type of the data -> -> processed; e.g. data from rear-view camera shall be decoded and visualized “instantly” in -> -> comparison to a movie clip displayed on rear-passenger monitor, voice notification from -> -> navigation software shall not be delayed significantly, speech data passed to and from -> -> Bluetooth headset during phone conversation shall have reasonably bounded latencies and so -> -> on. -> -> It is considered that multimedia system may consist of multiple processing units, and therefore -> -> processing load balancing mechanism shall be present. Mechanisms of audio/video processing -> -> offloading to dedicated processing units (hardware acceleration) shall be provisioned, with -> -> particular implementation freedom left for a silicon vendor. -> -> The following requirements formalize these considerations. -> -> **5.2.5.2 Requirements** -> -> 5.2.5.2.1 Media Containers -> -> AGL shall provide an API that allows handling of various media data within the system. This -> -> includes audio/video playback and recording as well as media streaming over the network. It -> -> shall be possible to run multiple media streams in parallel for all IVI users, with configurable -> -> input/output devices routing. Multimedia framework does not necessarily need to be isolated -> -> from application (that is, it may run in the same address space as application), however it shall -> -> be guaranteed that independent applications using the framework are isolated from each other. -> -> Page 112 of 159 -> -> ![](media/picture223.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> AGL shall provide support for extraction from media containers streams other than audio-visual, -> -> for example subtitles. Application shall be able to retrieve timing information as well as stream -> -> identification data from media container. -> -> AGL shall provide support for major network streaming protocols such as: -> -> · HTTP -> -> · RTPS -> -> · Digital Radio (DAB) -> -> · DigitalTV (DVB-T) etc. -> -> It shall be possible to extend the set of supported streaming protocols in accordance with -> -> system requirements. -> -> AGL shall provide a mechanism to utilize available hardware accelerators to offload -> -> computationally extensive processing to specialized units in vendor-specific way. Such -> -> extension, if available, shall be transparent to the applications. -> -> Lip Synch must be implemented as plug-in software for Multimedia Framework. -> -> AGL shall provide a mechanism to automatically detect type of media data contained in the -> -> source file, and to instantiate all required components to organize data processing without -> -> intervention of the application. It shall be, however, possible for application to control this -> -> process if it is essential for its functionality. Example of such intervention would be selection of -> -> particular audio track (in user-chosen language) or selection of particular video stream from -> -> multiple choices. -> -> AGL shall provide an API to control execution of audio/video processing chain, specifically shall -> -> support the following functionality: -> -> · -> Selection of data source and destination (files, devices, network resources) -> -> · Pausing/resuming of multimedia streams -> -> · Rewinding in forward and reverse directions (for playback) -> -> · Audio volume control on per-stream basis -> -> · Retrieval of current stream position (timestamp) -> -> Page 113 of 159 -> -> ![](media/picture224.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · -> Notifications on error conditions preventing multimedia stream processing -> -> AGL shall provide a mechanism to specify routing of input and output devices that are involved -> -> into multimedia data processing. In particular, for playback scenario it shall be possible to -> -> specify where audio and video data is rendered, and for recording scenario it shall be possible to -> -> specify capturing source. It shall be possible to organize broadcasting of decoded raw -> -> audio/video streams to multiple renderers as well. -> -> AGL shall include a dedicated sound server that simplifies routing, mixing, post-processing and -> -> synchronization of raw PCM audio streams. Specifically, the following functionality is expected: -> -> · -> Support for multiple audio sources and audio sinks with arbitrary (configurable) routing. -> -> · Per-stream volume and audio effects control. -> -> · -> Resampling and format conversion (e.g. channels downmixing, sample width conversion). -> -> · -> Sample-accurate streams synchronization (e.g. for echo-cancellation purpose). -> -> · Mixing and broadcasting of the audio streams. -> -> AGL shall provide a mechanism to control sound server configuration in run-time, that is, to -> -> specify the rules and policies defining system response to external events like adding or -> -> removing of new audio device (e.g. Bluetooth headset connection), receiving of the phone call, -> -> emergency system alarm output and so on. -> -> AGL shall provide support for major multimedia containers, such as: -> -> · MPEG2-TS/PS (ISO/IEC 13818-1) -> -> · MP4 (MPEG-4 Part 14, ISO/IEC 14496-14:2003) -> -> It shall be possible to extend the set of supported multimedia formats in accordance with -> -> system requirements. -> -> It must be possible to extend AGL to support additional optional multimedia containers such as: -> -> · OGG (RFC 3533) -> -> · 3GPP (ISO/IEC 14496-12) -> -> · etc -> -> Page 114 of 159 -> -> ![](media/picture225.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 5.2.5.2.2 Media Audio Codecs -> -> AGL shall provide support for major audio codecs, such as: -> -> · -> MP3 (MPEG-1/2 Audio Layer-3, ISO/IEC 11172-3, ISO/IEC 13818-3) -> -> · AAC (ISO/IEC 13818-7, ISO/IEC 14496-3) -> -> It shall be possible to extend the set of supported audio codecs in accordance with system -> -> requirements. -> -> It must be possible to extend AGL to support additional audio codecs, such as: -> -> · VORBIS (http://xiph.org/vorbis/) -> -> · Windows Media Audio -> -> · etc. -> -> 5.2.5.2.3 Media Video Codecs -> -> AGL shall provide support for major video codecs, such as: -> -> · MPEG-2 (ISO/IEC 13818-2) -> -> · MPEG-4 Part 2 (ISO/IEC 14496-2) -> -> · H.264 (MPEG-4 Part10, ISO/IEC 14496-10, ITU-T H.264) -> -> It shall be possible to extend the set of supported video codecs in accordance with system -> -> requirements. -> -> It must be possible to extend AGL to support additional video codecs, such as: -> -> · Theora (www.theora.org) -> -> · Windows Media Video -> -> · etc -> -> 5.2.5.2.4 Image File Formats -> -> Page 115 of 159 -> -> ![](media/picture226.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> The system shall be able to perform all required operations on viewing of Image in BMP, up to 32 bit true -> -> colour. -> -> Compression formats -> -> · RLE 8 bits/pixel -> -> · RLE 4 bits/pixel -> -> · Bit field or Huffman 1D compression -> -> · JPEG or RLE-24 -> -> · PNG -> -> The system shall be able to perform all required operations on Viewing of Image in JPEG/JPEG 2000 -> -> The system shall be able to perform all required operations on viewing of Image in JPEG XR/HD, including -> -> Exchangeable Image File Format (EXIF) format. -> -> The system shall implement the ability to perform all required operations on Viewing of Image in PNG, -> -> including transparency -> -> The system shall be able to perform all required operations on viewing of Image in GIF 87a and enhanced -> -> version 89a and also animation in GIFF images. -> -> The system shall be able to perform all required operations on viewing images in TIFF format. -> -> The system shall implement the ability to perform all required operations on viewing of Image in WBMP -> -> format. -> -> The system shall implement the ability to perform all required operations on viewing of Image in WBMP -> -> format. -> -> **5.2.6 Navigation Services** -> -> Navigation engine -> -> Page 116 of 159 -> -> ![](media/picture227.jpeg)![](media/picture228.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **5.2.7 PIM** -> -> Personal Information Manager; calendar, appointments, reminders, etc. -> -> **5.2.8 Smartphone Link** -> -> This section describes regarding Smartphone link. Smartphone Link is the technology which -> -> realizes that video and audio streaming play which data from smartphone. And touch operation -> -> is possible to share between IVI and smartphone. MirrorLink, Miracast, SmartDeviceLink and -> -> AirPlay are technologies that realize Smartphone Link. By this technology, it is possible to use -> -> smartphone content (map, music, browser...) by IVI. -> -> Figure 8-30 shows the system structure of the Smartphone Link. -> -> **Figure: 8-30** -> -> Page 117 of 159 -> -> ![](media/picture229.jpeg)![](media/picture230.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> AGL defines following requirements of Smartphone link. -> -> 1. The screen of smartphone shall be mirrored to IVI. -> -> 2. The sound of smartphone shall be linked to IVI. -> -> 3. The sound shall be synchronized with the screen. -> -> 4. IVI should operate smartphone. -> -> 5. The response time of operations from IVI should be less than 200ms. -> -> 6. If connection between smart phone and ivi was disconnected by external factor, then should -> -> inform the "disconnection" to a user and return to the normal state. -> -> This document describes “Miracast” and “SmartDeviceLink” from the reference of Smartphone -> -> link. -> -> **5.2.8.1 Miracast** -> -> This section describes requirements regarding Smartphone link (Miracast). -> -> Miracast is the display transfer technology using wireless connection which was defined by Wi- -> -> Fi Alliance. Send screen data from source device to sink device and it realize display sharing -> -> between source device and sink device. -> -> Following figure (Figure: 8‑31) shows the system structure of Miracast. -> -> **Figure: 8-31** -> -> Page 118 of 159 - - ---------------------------------------------------------------------------------------------- - > **No** > **Requires** > **Description** - ------------ ----------------------------- --------------------------------------------------- - > SPL.1.1 > WFD Topology > Define role of Miracast - - > SPL.1.2 > Connection Topology > Define connection condition between - > - > a smartphone and an IVI - - > SPL.1.2. > P2P Topology > Define connection method of P2P (Wi-Fi - > > - > 1 > Direct). - - > SPL.1.2. > Wi-Fi Frequency > Define Wi-Fi frequency - > - > 2 - - > SPL.1.3 > Video Format > Define Video format - - > SPL.1.4 > Audio Format > Define Audio format - - > SPL.1.5 > Session Control > Define Miracast session state - - > SPL.1.6 > Link Content Protection > Define content protection function required - > - > for implementing Miracast - - > SPL.1.7 > Resource Management > Define resource management - ---------------------------------------------------------------------------------------------- - -> ![](media/picture231.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Follow reference documents to support Miracast if there was no description of this section. -> -> **References** -> -> \[1\] Wi-Fi Display Technical Specification Version 1.0.0 -> -> \[2\] W-Fi Peer-to-Peer (P2P) Technical Specification Version 1.2 -> -> \[3\] High-bandwidth Digital Content Protection System Interface Independent Adaption Revision -> -> 2.2 -> -> \[4\] DCP (Digital Content Protection) <http://www.digital-cp.com/> -> -> AGL provide display sharing technology between Smartphone and IVI system using Miracast. -> -> Page 119 of 159 -> -> ![](media/picture233.jpeg)![](media/picture234.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> SPL.1.8 Fail-safe Control Define Fail-safe control -> -> **Table 8-14: Smartphone Link (Miracast) Requirements** -> -> **Figure: 8-32 State Change Diagram** -> -> The states of Smartphone link (Miracast) is defined in Table 8-32. -> -> Page 120 of 159 - - ------------------------------------------------------------------------------------------------------- - > **No.** > **State** > **Description** - ----------- ------------------------- ----------------------------------------------------------------- - > 1 > Idle > Smartphone link (Miracast) function is not initialized. - - > 2 > Initialized > Smartphone link (Miracast) function is initialized and - > - > waiting for Wi-Fi P2P connection from source - > - > device. - - > 3 > Connected Wi-Fi P2P > Established Wi-Fi P2P connection with source - > - > device. - - > 4 > Initiated > Smartphone link (Miracast) session is established. - - > 5 > Play > Streaming the audio and video content from source - > - > device to sink device. - - > 6 > Pause > Paused the streaming of audio and video content - > - > from source divide to sink device. - ------------------------------------------------------------------------------------------------------- - -> ![](media/picture235.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **5.2.8.2 Smart Device Link** -> -> “Smart Device Link”, aka “SDL”, is template based approach of smartphone link capability. -> -> Application itself is in a mobile phone, however, HMI is provided by IVI system. This approach -> -> makes it possible to apply IVI adapted user experience, such as larger button to prevent driver’s -> -> distraction and voice recognition. -> -> That means, application requests to IVI system, then IVI system will respond by using remote -> -> procedure calls. Application’s HMI will be rendered by IVI system by using IVI’s HMI framework -> -> and/or policy, though all the application’s logic is contained in mobile phone. -> -> SDL provides more suitable HMI for IVI rather than mirroring type approach, however, mobile -> -> phone’s application must support SDL capability. In other words, only SDL supported -> -> applications can be launched. -> -> Page 121 of 159 -> -> ![](media/picture236.jpeg)![](media/picture237.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **Figure 8-33 : SDL overview** -> -> **5.2.8.3 Requirements** -> -> 5.2.8.3.1 Miracast -> -> System must provide a capability of Miracast as smartphone link function. -> -> · -> Support WFD Primary Sink and support MPEG2-TS(Video, Audio) streaming play which -> -> from Source Device‑Smartphone‑. -> -> · Supporting WFD Source is an option. -> -> · -> Support customize function using “Miracast setting file” which used for negotiation (\*1) -> -> source device and sink device (\*1. Video format, audio format and other parameters). -> -> · -> Screen data which from Smartphone may not support Drivers Destruction, therefore take -> -> measures to Drivers Destruction. (e.g. Disable Miracast during vehicle speed over -> -> 5Km/H) -> -> · Support Wi-Fi P2P connection. -> -> · -> Follow reference \[1\] and reference \[2\] to support Wi-Fi P2P function, parameters in -> -> Miracast connection and so on if there was no description of this section. -> -> · Wi-Fi TDLS connection is an option. -> -> · -> AGL do not define confliction specification regarding Wi-Fi connection. (e.g. User select -> -> Wi-Fi P2P connect ion during accessing Wi-Fi connection.) -> -> · -> AGL do not define confliction specification regarding Sink device operation when receive -> -> Page 122 of 159 -> -> ![](media/picture238.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> connection request from Source device. (e.g. Connect automatically, ask user for -> -> confirmation) -> -> · -> Support P2P Group Owner and P2P client as the topology of Wi-Fi P2P connection. -> -> · -> Support DHCP server and DHCP client for TCP/IP seamless connection after P2P -> -> connection established. -> -> · -> Support 2.4GHz band for the frequency of Wi-Fi P2P connection. -> -> · -> Supporting 5GHz band is an option, but support DFS (Dynamic Frequency Selection) -> -> function if support 5GHz band. -> -> · Follow reference \[1\] for Video Codec. -> -> · Support follow format for Video Resolution and Frame rate. -> -> o 640\*480‑VGA‑‑Progressive 60 fps -> -> o 1280\*720‑HD‑Progressive 30 fps -> -> Regarding Video resolution and Frame rate, other formats are an option. -> -> · Support follow format for Audio. -> -> o LPCM 48ksps 16bit 2ch -> -> o AAC 48ksps 16bit 2ch -> -> Regarding Audio Format, other formats are an option. -> -> When the state changes "Pause", take measures to give notice of pause for user. (e.g. pop-up -> -> notification) -> -> Screen data which from Smartphone may be protected by content protection, therefore support -> -> content protection function. -> -> · -> AGL recommend HDCP function which described reference \[2\], \[3\]. But AGL do not -> -> define HDCP function. Each vendor should support content protection function as for -> -> Page 123 of 159 -> -> ![](media/picture239.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> vendor’s own reason. -> -> · Support both encryption cases if support HDCP function. -> -> o Case1 Videos data encryption -> -> o Case2 Both video and audio encryption -> -> Take notice that it is necessary to satisfy security requirements specified according to -> -> DCP.(reference \[4\]) -> -> · -> Miracast must support interruption by other function. If some high priority event occurs, -> -> then Miracast release screen and audio resources for the event. -> -> · -> It is selectable how to deal Miracast session. (Standby Miracast session or close Miracast -> -> session.) -> -> · -> Support a notification to a user and returning to the normal state, if following events -> -> happen. -> -> o Failed to Wi-Fi connection -> -> o Failed to establish Miracast session -> -> o Wi-Fi link loss on Miracast -> -> o Break Miracast connection from smartphone -> -> 5.2.8.3.2 Smart Device Link -> -> System must provide a capability of Smart Device Link as smartphone link function. -> -> System must provide a mechanism to render HMI of SDL according to template. -> -> System must provide a mechanism to enable user interface regarding SDL by using touch panel -> -> device of IVI device. -> -> System must provide a mechanism to enable user interface regarding SDL by using voice -> -> Page 124 of 159 -> -> ![](media/picture240.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> recognition of IVI system. -> -> System must provide a mechanism to link Android device regarding SDL capability. Connectivity -> -> method must be supported Bluetooth and/or Wi-Fi. -> -> System must provide a mechanism to link iPhone device regarding SDL capability. Connectivity -> -> method must be supported Bluetooth and/or Wi-Fi. -> -> **5.2.9 Speech Services** -> -> The Speech Services module provides voice recognition and synthesis for AGL applications. -> -> AGL system voice framework must be able to record and interpret voice commands -> -> AGL system voice framework must be able to convert text to synthesized speech -> -> **5.2.10 Tuner Services** -> -> The Tuner Services module provides a mechanism that allows different tuner types to plug into -> -> the same API regardless of the receiver type. Support for AM/FM, HD Radio, SDARS, DAB, DRM, -> -> TV Tuners etc is provided. The Tuner Services module shall allow multiple tuners to be present -> -> in the same system and allow its clients to address each tuner in the system independently. -> -> **5.2.10.1 Receivers** -> -> The Receivers module of Automotive Grade Linux may control different receiver types including -> -> AM, FM, Hybrid Digital (HD) Radio, SDARS, and DAB tuners. The module may access any -> -> number of different tuners. For all tuner types the module supports accessing station data from -> -> the tuner, changing the receiver frequency or station and reading station metadata about current -> -> content. -> -> The Receivers module shall provide a mechanism that allows different tuner types to plug into -> -> the same API regardless of the receiver type. -> -> Page 125 of 159 -> -> ![](media/picture241.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> The Receivers module shall allow multiple receivers to be present in the same system and allow -> -> its clients to address each receiver in the system independently. -> -> 5.2.10.1.1 HD Radio -> -> HD Radio is a proprietary In-Band on Channel (IBOC) system created and owned by Ibiquity. An -> -> HD radio receives analog AM/FM signals and can also use digital information in a subband to -> -> provide additional stations and/or enhance the audio quality of the main station. When the -> -> receiver is decoding digital data for AM/FM playback it is commonly thought of as HD Radio. The -> -> HD Radio system architecture shall conform to the broadcast system design proposed by the -> -> iBiquity Digital Corporation detailed in RX\_SSFD\_5029. Both the HD hardware and functional -> -> design shall meet all iBiquity Digital specifications, and satisfy the Type Approval specified by -> -> iBiquity Digital. -> -> The IBOC hardware is assumed to have three modes which will be used to describe the -> -> requirements in this section. -> -> 1) AM - radio is decoding an over the air AM station. -> -> 2) FM - radio is decoding an over the air FM station. -> -> 3) HD - radio is decoding an AM or FM station using the subband for the over the air station. -> -> Each requirement may refer to AM and/or FM and/or HD to specify the modes the requirement is -> -> applicable to. -> -> AM/FM/HD system shall be able to enable/disable the HD radio reception and present the status -> -> to the system. -> -> AM/FM/HD tuner shall be able to tune to a specified frequency and report the result of the -> -> tuning process. The possible results are, Tuning successful and Tuning unsuccessful. If Tuning -> -> successful event is notified by the tuner, it shall play the audio through the selected audio -> -> output. If tuner notifies the Tuning unsuccessful event, the system shall inform that "No -> -> Reception" is available in that specific channel. -> -> AM system shall extract following parameters from a successfully tuned channel and present to -> -> the system, which shall be added in the station database. -> -> Page 126 of 159 -> -> ![](media/picture242.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · Frequency -> -> · Mono/Stereo -> -> FM system shall extract following parameters from a successfully tuned channel and present to -> -> the system, which shall be added in the station database. -> -> · Frequency -> -> · PI Code (RDS only) -> -> · PTY (RDS only) -> -> · Radio Text (RDS only) -> -> · PS Name (RDS only) -> -> · Category (RDS only) -> -> · Mono/Stereo -> -> HD system shall extract following parameters from a successfully tuned channel and present to -> -> the system, which shall be added in the station database. -> -> · Frequency -> -> · PTY -> -> · No of HD channels available -> -> · Radio Text -> -> · Channel Name -> -> · Category -> -> · Bit rate -> -> · Station Logo -> -> · Artist Experience -> -> The System shall allow the tuned frequency to be incremented or decremented. -> -> The System shall be able to tune to the next/previous valid station as determined by signal -> -> strength. -> -> AM/FM/HD system shall be able to abort Seek Up/Down operations. -> -> Page 127 of 159 -> -> ![](media/picture243.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> FM/HD system shall be able to set the stop sensitivity for seek over FM band and shall be -> -> possible to adjust by software. -> -> · Range: 15 – 40 dBµV -> -> · Step: 1 dBµV -> -> · Default: 20 dBµV -> -> · -> Other parameters like multipath shall be possible to use for determining Stop sensitivity -> -> level. TBD, Supplier to suggest solution. -> -> AM/HD system shall be able to set the stop sensitivity for seek over AM band and shall be -> -> possible to adjust by software. -> -> · Range: 20 – 40 dBµV -> -> · Step: 1 dBµV -> -> · Default: 34 dBµV -> -> · -> It shall be possible to have different setting depending on atmospheric conditions (e.g. -> -> different for night and day). -> -> The system shall be able to switch between AM and FM bands. -> -> HD system shall be able to extract the Station Information Service (SIS) Short Name from the -> -> SIS Protocol Data Unit (PDU) on the Primary IBOC Data Service (PIDS) logical channel and -> -> present to the system. The implementation of SIS Short Name feature shall be in compliance -> -> with iBiquity Digital specification "HD Radio™ Air Interface Design Description Station -> -> Information Service Transport". -> -> HD system shall be able to extract the Station Information Service (SIS) Long Name from the -> -> SIS Protocol Data Unit (PDU) on the Primary IBOC Data Service (PIDS) logical channel and -> -> present to the system. The implementation of SIS Long Name feature shall be in compliance -> -> with iBiquity Digital specification "HD Radio™ Air Interface Design Description Station -> -> Information Service Transport". -> -> HD system shall indicate the HD channel number of current tuned channel. It shall be 1 to 8. -> -> Page 128 of 159 -> -> ![](media/picture244.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> HD system shall extract the following PAD data from audio stream and present to the system. -> -> · Song -> -> · Artist -> -> · Album -> -> · Genre -> -> · Comments -> -> · Commercial -> -> · Reference Identifier -> -> The system implementation shall be in compliance with iBiquity Digital HD radio specification -> -> "HD Radio Air Interface Design Description - Program Service Data Rev. C" -> -> FM/HD system shall be able to receive and extract the RDS/RBDS data and present to the -> -> system. The system implementation shall be in compliance with "BS EN 62106:2009, -> -> Specification of the radio data system (RDS) for VHF/FM sound broadcasting in the frequency -> -> range from 87,5 MHz to 108,0 MHz". -> -> FM/HD system shall be able to enable/disable RDS/RBDS. When RDS/RBDS is enabled/disabled -> -> the system shall indicate this. -> -> FM/HD system shall be able to enable/disable the radio text display. -> -> FM/HD system shall present the Alternative Frequency (AF) setting status to the system. -> -> FM/HD system shall be able to enable/disable alternative frequency switching. -> -> FM/HD system shall be able to notify the system when an Emergency Alert Interrupt is received. -> -> FM/HD system shall be able to skip the Emergency Alert when it is on-air. -> -> FM/HD system shall be able to notify the system when Emergency Alert Interrupt is received -> -> through RDS. -> -> Page 129 of 159 -> -> ![](media/picture245.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> FM/HD system shall be able to cancel the PTY31 interrupt notification. -> -> FM/HD system shall be able to enable/disable the Traffic Announcement reception. -> -> FM/HD system shall present the status of the FM traffic announcement to the system. -> -> FM/HD system shall be able to skip the FM traffic announcement when it is on-air. -> -> FM/HD system shall be able to enable/disable regionalisation. -> -> FM/HD system shall be able to enable/disable the Traffic Message Channel (TMC) reception. -> -> FM/HD system shall be able to enable/disable the Transport Protocol Expert Group (TPEG) -> -> reception. -> -> FM/HD system shall be able to receive the traffic updates from the Japanese traffic channels. -> -> FM/HD system shall be able to enable/disable the News announcement reception. -> -> FM/HD system shall be able to skip the News when being broadcast. -> -> HD system shall decode PNG images which shall be in compliance with HD Design specification. -> -> HD system shall be able to decode the channel icon PNG images and present to the system. -> -> AM/FM/HD system shall be able to mute the audio output. -> -> AM/FM/HD system shall be able to un-mute the audio output. -> -> *HD system shall extract the album name, artist name, track number from the audio stream a*nd -> -> Page 130 of 159 -> -> ![](media/picture246.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> present to the system. -> -> The feature will store the data of a tagged song in non-volatile memory within the IMC. The -> -> feature will be able to store at least 50 tags. -> -> *5.2.10.1.1.1 Configuration* -> -> AM/FM/HD system shall be able to configure the frequency band through local configuration -> -> file. -> -> AM/FM/HD system shall be able to configure the step frequency through local configuration file. -> -> AM/FM/HD system shall be able to configure the seek stop level threshold through local -> -> configuration file. -> -> 5.2.10.1.2 Database Requirements -> -> AM/FM/HD system shall require a database to store the channel list information which contains -> -> the following attributes: -> -> · Frequency -> -> · PTY (FM & HD only) -> -> · Channel name (FM & HD only) -> -> · Channel icon (HD Only) -> -> · Category (FM & HD only) -> -> AM/FM/HD system shall be able to update the channel list database based on the following -> -> conditions: -> -> · New channel is found -> -> · Existing channel disappears -> -> · -> Channel list update shall not create any inconsistency on the current channel list -> -> database. -> -> Page 131 of 159 -> -> ![](media/picture247.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> AM/FM/HD system shall sort the channel list database based on the channel name, and present -> -> to the system. -> -> AM/FM/HD system shall sort the channel list database based on the ascending order of the -> -> frequency, and present to the system. -> -> FM/HD system shall sort the channel list database based on the PTY (Program Type) category, -> -> and present to the system. -> -> AM/FM/HD system shall create favourite station database which consists of the following -> -> information: -> -> · Station name (FM and HD only) -> -> · Frequency -> -> · Status of HD (HD, HD1, HD2) -> -> · HD SIS (HD only) -> -> AM/FM/HD system shall be able to update the database based on following conditions: -> -> · Favourite station changed -> -> · Favourite station is removed -> -> · New favourite is added -> -> **5.2.11 Vehicle Bus / Vehicle Info Control** -> -> Vehicle Info Control (VIC) provides a capability to access to various vehicle properties from -> -> applications and/or other middleware. Standardized interfaces are provided to vehicle CAN, and -> -> LIN bus. Figure 7-27 describes overall architecture of Vehicle Info Control. The main purpose of -> -> VIC is to provide API to application and/or middleware. Vehicle Info Control has four main -> -> functions. -> -> · Vehicle Data Processing -> -> · Communication between ECUs -> -> · Vehicle Data Upload -> -> Page 132 of 159 -> -> ![](media/picture248.jpeg)![](media/picture249.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · Simulator -> -> **Figure 7-27 : Overview of Vehicle Info Control** -> -> **5.2.11.1 Vehicle Data Processing** -> -> Vehicle data is the information about the vehicle itself, and the information in cars (for example, -> -> personal information on a driver, etc.). VIC deals with all the information which application -> -> and/or middleware need within vehicles. The following data is contained in these. -> -> · -> Vehicle information about the vehicles itself, such as speed, a shift position,‑temperature -> -> · User Information, such as a name, taste, etc. of a driver -> -> · The operation history of a driver -> -> Page 133 of 159 -> -> ![](media/picture250.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · -> The operation state of the vehicles which middleware determined based on vehicle -> -> conditions, such as speed and day and night -> -> Vehicles data processing consists of the following functional elements further. -> -> (1) Abstraction of Vehicles Data -> -> In VIC, all vehicles data is treated as abstract data. it concerns and comes out of this to the kind -> -> of car, or the country of the destination. For example, though speed is detected at the revolving -> -> speed of the wheel, in VIC, vehicles data is abstracted and treated at speed and it provides for -> -> application and/or middleware. Thereby, application and/or middleware can treat the vehicles -> -> data of the same implications and the same unit. -> -> (2) Maintenance of Vehicles Data -> -> Each abstracted vehicles data is held. The vehicles data to hold is a current value and the past -> -> value (history). -> -> (3) Application / Middleware Interface (API) -> -> The accessing function of the vehicles data from application and/or middleware is offered as API. -> -> Acquisition of the current value of vehicles data or the past history, a setup of vehicles data, and -> -> the change notice function of vehicles data are included in this. However, each vehicles data -> -> restricts the application and/or middleware which can be accessed according to the importance -> -> (access control). -> -> (4) Vehicles Interface -> -> It is a function for managing the various data of vehicles of in-vehicle networks, such as CAN -> -> and FlexRay, etc. The component in which the exchange with actual vehicles performs the -> -> exchange with vehicles by a vehicle type since it is various is not included in requirements. -> -> However, the correspondence procedure of it and VIC is specified. It assumes that two or more -> -> Vehicle Interface is prepared depending on a communication method with vehicles, etc. In -> -> addition, the vehicles data which can be accessed for every Vehicles Interface is restricted. -> -> **5.2.11.2 Communications between ECUs** -> -> Page 134 of 159 -> -> ![](media/picture251.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> When a system consists of two or more ECUs, the vehicles data managed by ECU other than -> -> ECU in which application and/or middleware are working shall also be treated. For this reason, -> -> vehicle information processing communicates with it of other ECUs. Thereby, application and/or -> -> middleware can be treated, without caring about by which ECU required vehicles data is -> -> acquired. In addition, the communication function between ECUs also restricts the vehicle data -> -> which each ECU can access. -> -> **5.2.11.3 Vehicle Data Upload** -> -> When a system consists of two or more ECUs, the vehicles data managed by ECU other than -> -> ECU in which application and/or middleware are working shall also be treated. For this reason, -> -> vehicle information processing communicates with it of other ECUs. Thereby, application and/or -> -> middleware can be treated, without caring about by which ECU required vehicles data is -> -> acquired. In addition, the communication function between ECUs also restricts the vehicle data -> -> which each ECU can access. -> -> **5.2.11.4 Simulator** -> -> In the development environment of application and/or middleware, since actual vehicles data is -> -> unacquirable, it is preparing the simulator which imitated actual vehicles, and makes -> -> development environment construction easy. By a simulator, it assumes using the steering wheel -> -> controller for PC games. Since this function is an object for development environment, let it be -> -> an option. -> -> **5.2.11.5 Requirements** -> -> The system must hold vehicle information and must offer the mechanism in which application -> -> and/or middleware can access vehicle information. -> -> The system must provide application and/or middleware with vehicle information as an abstract -> -> property. For example, the speed of vehicles must be not the number of rotations of a wheel but -> -> the speed of a car. -> -> System must provide a mechanism to add or delete vehicle property easily. -> -> Page 135 of 159 -> -> ![](media/picture252.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System must support typical vehicle property as “standard property”. -> -> As for a standard property, it is desirable for the same attribute name to be the same meaning. -> -> System must provide a mechanism to add or delete custom vehicle property easily. -> -> A custom property is a property which a system donor can add uniquely in addition to a standard -> -> property. -> -> Let the unit of the value of Vehicle Info Data be an international unit(meter, gram, …etc) -> -> The value of Vehicle Info Data should have sufficient accuracy which application and/or -> -> middleware need. For example, when a unit is made into Km/h, an integral value is not enough -> -> as the accuracy of Velocity. It is necessary to change Km/h into MPH in the country of a mile -> -> display. Moreover, it is because the error of the speed display is defined by law. -> -> A vehicle information control facility requires the mechanism in which vehicle information is -> -> stored. A lot of events generate some information at high speed. About such information, the -> -> load to a system has few directions processed collectively. Moreover, when data is taken and -> -> spilt by an application, the structure which can carry out recovery is required. -> -> It is not realistic to accumulate all the information that changes at high speed. For this reason, In -> -> corresponding to neither of the following, it shall not store the change data. -> -> · -> The amount of change of a value. It is not accumulated when the difference from the -> -> accumulated newest value is less than a threshold value. -> -> · -> Lapsed time from the last change It does not accumulate, if time has not passed since the -> -> newest accumulation. -> -> About each vehicle information, the threshold value and cumulative dosage of accumulation need -> -> to be able to set up easily. -> -> In addition, it also makes it possible not to accumulate specific vehicle information. -> -> System must provide an interface to application and/or middleware regarding vehicle property -> -> access. -> -> System must provide an interface to retrieve vehicle property from application and/or -> -> middleware. -> -> Page 136 of 159 -> -> ![](media/picture253.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Below attributes must include in this interface -> -> · Zone(optional) -> -> · Property name -> -> · Value -> -> · -> Timestamp - Timestamp specifies last updated time of corresponded vehicle property. -> -> System must provide an interface to set abstracted value to vehicle property from application -> -> and/or middleware. -> -> Below attributes must include in this interface. -> -> · Zone(optional) -> -> · Property name -> -> · Value -> -> System must provide an interface to subscribe status change of vehicle property from -> -> application and/or middleware. -> -> When status changed, system must invoke callback function with below attributes. -> -> · Zone(optional) -> -> · Property name -> -> · Value -> -> · Timestamp -> -> · Sequence number -> -> Timestamp specifies last updated time of corresponded vehicle property. -> -> Sequence number is useful to check event order. -> -> The acceptable value of change can be specified for vehicle information about the notice of -> -> change of vehicle information. -> -> In order to lower system-wide load, it will not notify, if it is change which is less than an -> -> acceptable value even if vehicle information changes. -> -> For example, although engine number of rotations changes every moment, in the case of the -> -> application which displays it in 20 steps, it is not necessary to know less than several percent of -> -> change. -> -> Page 137 of 159 -> -> ![](media/picture254.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> It shall not notify the change, in corresponding to neither of the following. -> -> · -> The amount of change of a value - It does not notify, if the amount of change of the -> -> value from the last notice of change is less than specification. -> -> · -> Lapsed time from the last change - From the last notice of change, if it is less than a -> -> definite period of time, it does not notify. -> -> Depending on application, the notice with a fixed cycle is more convenient than the notice at the -> -> time of change. -> -> What is notified only the specified cycle even if it changes two or more times into the specified -> -> notice interval is made possible. -> -> The data stored is acquired collectively. -> -> Below attributes must include in this interface. -> -> · Zone(optional) -> -> · Property name -> -> · Values -> -> · Timestamps -> -> It is desirable that the time range to acquire can be specified. For example, data from 10 -> -> seconds before to the present, data from 13:20 to 14:00, etc. -> -> There is an attribute for which change/reference is simultaneously needed in relation to mutual -> -> in vehicle information. For example, latitude, longitude, and an altitude are changed -> -> simultaneously. If these pieces of vehicle information is changed and referred to individually, the -> -> newest longitude may acquire the value in front of one, and a current position may be unable to -> -> recognize latitude correctly. For this reason, it is necessary to summarize the vehicle information -> -> relevant to mutual and to access it. -> -> Access of ones of those vehicle information is deterred until renewal of all the vehicle -> -> information included in Property Set at the time of a setup of vehicle information is completed, -> -> and renewal of ones of those vehicle information is deterred until it completes acquisition of all -> -> those vehicle information at the time of reference. -> -> The definition of the vehicle information included in Property Set is being able to change easily. -> -> Or the thing which can be changed from a program during operation. -> -> Page 138 of 159 -> -> ![](media/picture255.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System must provide a mechanism of access control per each property. For example, property -> -> "velocity" can be accessed from only application A and B, but property "turn signal" can be -> -> accessed from all applications. -> -> System must also provide a mechanism of access control per each method even if same -> -> property. For example, about "seat setting", all applications can get this property, but only -> -> application C can set this property. -> -> Permission for each property and method must be configurable easily. Because, access control -> -> policy may be different per car type, grade and destination. -> -> System must provide a mechanism to enable routing any vehicle property both within same ECU -> -> and across two or more ECU’s. -> -> If a Property Change event is received from VIC, change can be notified to all the applications, -> -> middleware and other VICs which are subscribing change of the vehicle information. In addition, -> -> the notice of change must be able to be distributed also to the application and/or middleware -> -> which exist in a different ECU. -> -> VIC can be requested to set the value specified as Property. -> -> It can set, even if it exists on ECU from which an application and VIC differ. -> -> The newest value can be returned immediately, without asking VIC to the acquisition demand -> -> from an application. For this reason, keep the newest value of each Property. -> -> Even if it is in ECU from which VIC of the Property differs, the demand from an application -> -> responds. -> -> It can exchange with two or more VICs. Addition and deletion of Data Provider can be performed -> -> easily. -> -> The data exchange between ECUs should be permitted by VIC. -> -> All data transmission and reception from other Software Component are refusing. -> -> Page 139 of 159 -> -> ![](media/picture256.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> The system should have a mechanism which communicates the stored vehicles. -> -> The vehicle information to upload is being able to choose. -> -> A selection condition is that the following specification is possible at least. -> -> · Date-and-time range -> -> · Object vehicles data -> -> · The change threshold value of vehicles data -> -> Enable change of selection of vehicle information easily. As for this, it is desirable for it to be -> -> able to change dynamically from an external. -> -> The simulator of vehicles data using the steering wheel controller for PC games, etc. as -> -> substitution of actual vehicles in development environment is prepared. -> -> Car Simulator is being able to notify the following vehicles data to vehicles data processing -> -> activities through a vehicles interface function at least. -> -> · Speed -> -> · Shift position -> -> · The direction of vehicles -> -> · Latitude and longitude of a current position -> -> · Turn signal -> -> The steering wheel controller for PC games to be used is being able to obtain easily. Moreover, -> -> it is desirable that two or more steering wheel controllers can be used. -> -> VIC should fill the following performance specifications and performance. -> -> It is a value on condition of H/W assumed that the following values will be used for in-vehicle -> -> information machines and equipment in 2016. -> -> Page 140 of 159 -> -> ![](media/picture257.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · Maximum number of properties : 4,096 -> -> · Maximum number of property sets: 1,024 -> -> · Greatest data storage time : 12 hours -> -> It is a value on condition of H/W assumed that the following values will be used for in-vehicle -> -> information machines and equipment in 2016. -> -> · Get/Set method(one property) - 0.2ms -> -> · Get/Set method(property set include 30 properties) -1.3ms -> -> · Subscribe callback - 2.5ms (after change of a value) -> -> · -> GetHistory method(for within 3 minutes after the present) - 0.2ms -> -> · -> GetHistory method (older than 3 minutes from the present) - 50ms -> -> VIC is being able to change without having composition which has pliability and extendibility -> -> about the vehicles data to manage, and reconstructing the whole VIC about the kind and -> -> attribute of vehicles data. -> -> Vehicle Interface treats various kinds of in-vehicle LAN and sensors, and they are mounted by -> -> various H/W according to a maker or a vehicle type. For this reason, VIC needs to be able to add -> -> and change Vehicle Interface without reconstruction of VIC. -> -> Abstraction of vehicles data is the duty of Vehicle Interface in principle. This is because it is -> -> necessary to change the concreteness data depending on H/W of in-vehicle LAN or sensors. -> -> However, an abstract vehicles data value may be decided by combination of the concreteness -> -> vehicles data from two or more Vehicle Interface. In this case, VIC needs to change two or more -> -> concreteness vehicles data into one abstract vehicles data. -> -> Since this conversion is dependent on H/W of in-vehicle LAN or sensors, so it cannot be -> -> mounted in the VIC itself. -> -> In order to solve this, suppose that the mechanism in which such a conversion module can be -> -> added without reconstruction of VIC is prepared for VIC. -> -> **5.2.12 Telematics Services** -> -> V2V, V2I, RVI, Traffic information, etc. -> -> Page 141 of 159 -> -> ![](media/picture258.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> **5.2.13 Window System** -> -> A window system is a software component that facilitates an implementation of graphical user -> -> interface. A window system is responsible for managing display devices, Graphics Processing -> -> Units (GPUs), input devices, and graphics memory. A window system works with the software -> -> component named window manager that is responsible for a layout management of windows, -> -> and a routing of user interactions. -> -> AGL specifies that automotive grade Linux shall support multiple windows on a display. -> -> AGL specifies that automotive grade Linux shall support multiple windows owned by multiple -> -> processes to be rendered on a display. -> -> AGL specifies that automotive grade Linux shall support rendering to off-screen buffer to -> -> achieve flicker less rendering. -> -> AGL specifies that automotive grade Linux shall support composition of windows with off- -> -> screen buffers. -> -> AGL specifies that automotive grade Linux shall support a translucent window, i.e. underlying -> -> objects underneath the translucent window is visible depending on the alpha values of pixels. -> -> AGL specifies that automotive grade Linux shall make OpenGL/ES 2.0 API compliant to Khronos -> -> group available to clients for their rendering. -> -> AGL specifies that automotive grade Linux shall have a window manager that uses only public -> -> APIs provided by Window System and OpenGL/ES 2.0 for rendering and user interaction. -> -> AGL specifies that automotive grade Linux shall support window manager that is replaceable by -> -> configuration. -> -> AGL specifies that automotive grade Linux shall provide a window system that abstracts the -> -> *underlying display subsystem and GPU. AGL specifies that automotive grade Linux shall hav*e a -> -> Page 142 of 159 -> -> ![](media/picture259.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> window manager that relies on a standard rendering API such as OpenGL/ES 2.0 only. The -> -> window manager shall not rely on any hardware specific API. A window system and OpenGL/ES -> -> 2.0 API are responsible for a hardware abstraction. -> -> AGL specifies that automotive grade Linux shall support multi-headed display where available. -> -> AGL specifies that automotive grade Linux shall support mirroring of windows to multiple -> -> displays. -> -> AGL specifies that automotive grade Linux shall support hardware layers, such as DRM planes, -> -> where available. -> -> AGL specifies that automotive grade Linux shall compose windows using available hardware -> -> acceleration capabilities. -> -> AGL specifies that automotive grade Linux shall support management of windows and inputs -> -> from users depending on statuses of a vehicle. The statuses of vehicle include a speed of a -> -> vehicle, a motion of a vehicle, etc. For instance, the inputs may needs to be limited while the -> -> vehicle reaches to the certain speed. -> -> AGL specifies that automotive grade Linux shall abstract physical input devices such as buttons, -> -> a touch panel, a control knob etc. -> -> AGL specifies that automotive grade Linux shall support On-screen keyboard which takes input -> -> from available physical input devices. -> -> **6 Security Services** -> -> Security framework -> -> 6.1 Access Control -> -> Access Control describes requirements for AGL Access Control. -> -> Page 143 of 159 -> -> ![](media/picture260.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Access control is a mechanism to grant / deny access to APIs/files in the system. -> -> **6.1.1 Requirements** -> -> AGL system must support a system-wide access control mechanism. -> -> **7 Operating System Layer** -> -> 7.1 Kernel -> -> **7.1.1 Linux Kernel** -> -> Automotive Grade Linux uses the Linux Kernel. The kernel is constantly evolving with a new -> -> release about every sixty days. The automotive industry has design cycles of three to five years -> -> for IVI systems. Somehow a balance must be struck between updating operating system and -> -> kernel every few months and keeping up to date with modern features that the kernel and the -> -> rest of the open source community provides, -> -> **7.1.1.1 Requirements** -> -> AGL kernel shall be based on Long Term Support Initiative (LTSI) kernel. -> -> At the moment LTSI kernel is the only open source/public kernel that gets closer to automotive -> -> industry needs – it has certain automotive industry demanded components integrated, it is fully -> -> aligned with Linux LTS trees so it leverages security fixes and/or generic bugfixes adapted by -> -> Linux community, LTSI kernel merge window is more flexible to industry demands and allow to -> -> accumulate wider set of features, components and bugfixes relevant for industry (comparing to -> -> regular Linux kernel merge/release cycle). LTSI kernel is thoroughly validated manually and with -> -> the help of automated tools to track and discover anomalies and regressions. -> -> AGL development process should utilize bug tracker with ability to mark bugs as open/fixed on -> -> particular distribution branches. Open bugs should have direct impact on release decisions. -> -> Page 144 of 159 -> -> ![](media/picture261.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 7.2 Boot Loader -> -> 7.3 Hypervisor -> -> TBD. Need to add very basic “background” regarding virtualization, explain about OS-level -> -> virtualization/isolation, then about type1/type2 hypervisors (virtualization). In modern IVI -> -> systems OS-level virtualization is widely used (applications isolation, combination of Android -> -> and Linux apps together), future – maybe Linux/IVI + ADAS + Instrument Cluster = guests on -> -> top type1 hypervisor. -> -> **7.3.1 Requirements** -> -> AGL shall provide OS-level mechanisms for running multiple isolated instances (containers) that -> -> have its own directory structure, network devices, IP addresses and process table. The -> -> processes running in other containers shall not be visible from inside a container. -> -> AGL Linux should be configurable to work as Type-1 “bare-metal” hypervisor “guest”. Following -> -> functionality shall be supported by AGL Linux “guest”: -> -> · IPC (with hypervisor and other “guests”) -> -> · -> “paravirtualized” device drivers for peripherals shared with other “guests” (unless -> -> virtualization abstraction is supported by hardware) -> -> 7.4 Operating System -> -> **7.4.1 File Systems** -> -> File system (FS) requirements for AGL concentrate on Reliability, Accessibility, and Serviceability -> -> as their main characteristics. -> -> · -> *Reliability*means data integrity protection, automatic error detection and correction, -> -> tolerance to power failures, robustness under stress I/O load in multi-process -> -> environment, extended lifetime via use of wear leveling and bad block management -> -> techniques. -> -> Page 145 of 159 - - ------------------------------------------------------------------------------- - > **FS Requirements** > **R-FS References** - ------------------------------------------------------ ------------------------ - > 6. File Systems (P1) > 2. btrfs - > > - > 6.1. Robust File System for managed internal > 2.1. - > > - > storage (P1) > btr - > > - > 6.1.1. Power failure tolerance (P1) > fsc - > > - > 6.1.2. Quick recovery after power loss > k - > > - > (P1) > 3. ext2 - > > - > 6.1.3. Multi-threaded I/O (P1) > 3.1. - > > - > 6.1.4. On-demand integrity checker (P1) > e2 - > > - > 6.1.5. Read-only mode (P1) > def - > > - > 6.1.6. Non-blocking unmounting (P1) > rag - > > - > 6.1.7. Means for optimizing I/O > 4. ext3 - > > - > performance if it may degrade under > 5. ext4 - > > - > certain conditions. (P2) > 5.1. - > > - > 6.1.8. File space pre-allocation (P2) > e4 - > > - > 6.1.9. Meta-data error detection (P2) > def - > > - > 6.1.10. File data error detection (P2) > rag - > > - > 6.1.11. Online integrity checking (P2) > 5.2. - > > - > 6.1.12. Write timeout control (P2) > e2f - > > - > 6.1.13. Compression support (P2) > sck - > > - > 6.1.14. Quota support (P2) > 6. vfat - > > - > 6.1.15. I/O process priority (P2) > 7. UBIFS - > > - > 6.1.16. File system event notifications > 8. Generic - > - > tools and - > - > APIs - > - > 8.1. - > - > fan - ------------------------------------------------------------------------------- - -> ![](media/picture262.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> · -> *Accessibility*means ability to use external storage devices, as well as accessing -> -> designated parts of internal file system over secure wired or wireless connections. -> -> · -> *Serviceability*means ability to upgrade AGL as a whole or by updating individual -> -> packages, and availability of file system checking and optimization tools. -> -> ![](media/picture263.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> (P2) -> -> 6.1.17. Logical block size control (P2) -> -> 6.1.18. Snapshots (P2) -> -> 6.2. File System for non-managed internal -> -> storage (P1) - -May 28, 2015 - -otif - -y - -8.2. - -fst - -rim - -> 6.2.1. All P1 requirements from -> -> FS.1.1.x list (P1) -> -> 6.2.2. Wear leveling (P1) -> -> 6.2.3. Error detection/correction (P1) -> -> 6.2.4. Tolerance to flipping bits (P1) -> -> 6.2.5. Read/write disturb awareness -> -> (P1) -> -> 6.2.6. Bad block management (P1) -> -> 6.2.7. As many P2 requirements from -> -> FS.1.1.x list as possible (P2) -> -> 6.2.8. Wear leveling statistics (P2) -> -> 6.3. File Systems for removable storage (P1) -> -> 6.3.1. Restricted functionality from -> -> security point of view (P1) -> -> 6.3.2. Automount/autounmount (P1) -> -> 6.3.3. Automatic synchronous flushing -> -> of modified data to physical media (P2) -> -> **7.4.1.1 Requirements** -> -> AGL shall provide a set of file systems to support the following types of storage devices: -> -> internal managed (SSD, eMMC, etc.), internal non-managed (raw NOR and NAND FLASH -> -> memory), removable managed (USB stick, SD card). -> -> AGL shall provide robust file system suitable for use on managed internal storage devices, -> -> Page 147 of 159 -> -> ![](media/picture264.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> AGL shall provide robust file system suitable for use on non-managed internal storage devices, -> -> AGL shall provide a set of file systems popular on removable media devices. -> -> A system must be able to withstand power failures under heavy load of meta-data-intensive, -> -> and data-intensive operations, including power-failures during OS startup, and shutdown. -> -> A file system must be able to restore good data and meta-data state after unexpected power -> -> interruption without performing the full time-consuming integrity check. Such recovery should -> -> not add more than a second to the normal boot process after power failure on idle system. -> -> Normally this is achieved via journal- or log-based (also known as transactional or copy-on- -> -> write) operation. -> -> A file system must be able to handle meta-data-intensive, and data-intensive I/O from multiple -> -> threads and/or processes simultaneously. -> -> A file system must have integrity checking tool with ability to execute it on-demand. -> -> A file system must be able to switch between read-only, (when no data is committed to physical -> -> storage device), and read/write modes in runtime. E.g. via “mount –o remount,ro <device>” -> -> command. -> -> AGL must support “lazy” (delayed) unmounting. -> -> AGL should provide means for optimizing potentially degraded I/O performance after prolonged -> -> file system and storage use. Often, this refers to offline or online file system defragmentation. -> -> Another example is periodic fstrim execution on SSD storage. -> -> A file system should be able to pre-allocate space for created/extended files on request. This -> -> may be used to minimize fragmentation of frequently written files. -> -> A file system should have an option of automatic error detection in its meta-data. -> -> Page 148 of 159 -> -> ![](media/picture265.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> A file system should be able to associate error detection codes with separate blocks of stored -> -> data, and to verify the data against the codes in runtime upon each read from a physical device. -> -> A file system should have a utility for meta-data integrity checking on mounted partition. -> -> A file system should allow changing timeout after which it flushes modified data to physical -> -> media. -> -> A file system should support automatic data compression. -> -> It should be possible to enable file system quotas for particular users and/or groups. -> -> AGL should allow to set I/O scheduling class and priority for particular processes. -> -> AGL should allow user space applications to subscribe for file and directory change notifications. -> -> Making logical block size equal to a power of physical block size may improve physical I/O -> -> performance, and decrease file fragmentation impact. -> -> A file system should allow creation of snapshots. -> -> A file system must perform wear leveling before writing data, so that the limited number of -> -> erase/program cycles is evenly distributed across all device blocks. -> -> A file system must support the following error detection/correction algorithm(s): BCH4, BCH8. -> -> A file system should not just be able to detect/correct a number of flipped bits but should also -> -> actively prevent the issue from happening in the first place, especially after unexpected power -> -> interruption. Known techniques include forced reprogramming of blocks that were in use at the -> -> time of power failure, and copying data to a fresh block after detected error correction. -> -> A file system should not just be able to detect/correct errors caused by read/write disturb -> -> Page 149 of 159 -> -> ![](media/picture266.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> phenomenon but should also actively prevent the issue from happening in the first place. Known -> -> techniques include limiting the number of read cycles between erases, and copying data to a -> -> fresh block after detected error correction. -> -> A file system must perform bad block detection and management transparently to file system -> -> users. -> -> Current FLASH wear-related statistics should be accessible via user-space utility. -> -> A file system must support noexec, and nodev mount options. -> -> A file system must be able to automatically mount plugged-in removable media, and -> -> automatically unmount it when unplugged. -> -> A file system must support sync mount option. -> -> AGL shall provide a set of file systems to support the following types of storage devices: -> -> internal managed (SSD, eMMC, etc.), internal non-managed (raw NOR and NAND FLASH -> -> memory), removable managed (USB stick, SD card). -> -> **7.4.2 Resource Control** -> -> In IVI system, it depends time and occasion that which application and/or middleware should be -> -> higher priority. Resource control provides basic functionality regarding proper resource -> -> allocation for each process and/or process group. -> -> (cgroups) -> -> **7.4.2.1 Use Case and Role** -> -> If end user specified a destination and started route guidance, map drawing following current -> -> position and voice and/or visual guidance should be treated as higher priority than others. -> -> On the other hand, if end user is watching a movie, movie player and decoder should be assigned -> -> Page 150 of 159 - - ------------------------------------------------------------------------------------------- - > **No.** > **Role** > **Description** - ----------- -------------- ---------------------------------------------------------------- - > 1 > Priority > Allocate resource via its own priority. High priority - > - > process and/or process group should be assigned - > - > more resource. - - > 2 > Time slot > To share resource per time slot. - - > 3 > Release > Forced release of partially or whole allocated - > - > resource. - - > 4 > Grouping > Grouping two or more processes, and allocate - > - > resource per defined process group. - ------------------------------------------------------------------------------------------- - -> ![](media/picture267.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> to higher priority than others. -> -> Important point is that it may assign two or more high priority application and/or middleware at -> -> the same time. And, one function may be provided from two or more processes. -> -> Table 9-33 describes the role of resource control to be satisfied above purpose and use cases. -> -> AGL assumes four types of resources, CPU, memory, storage bandwidth and network -> -> bandwidth. Table 9-34 describes associated roles per each resource type. -> -> **Table 9-34 : Functions of System Resource Management** -> -> **7.4.2.2 Requirements** -> -> 7.4.2.2.1 Priority -> -> System provides a mechanism to set resource priority per each process. -> -> Page 151 of 159 -> -> ![](media/picture268.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> System provides an interface to set and refer resource priority of specific process. -> -> This interface must be called from other process. -> -> CPU resource must support “priority” based resource management. -> -> Resource Manager should dynamically change the ratio of offering resources according to the -> -> status of resources using by system. And its configuration must be changed easily. -> -> Resource Manager should log the status of resources using by system. -> -> Resource Manager should offer resources separately to threads of user land and threads of -> -> kernel. And Resource Manager should treat the bottom half and software interrupts as high -> -> priority tasks. -> -> 7.4.2.2.2 Time Slot -> -> When two or more process request to same resource at the same time, system must provide a -> -> mechanism to mediate to guarantee the time slot to obtain specific timeframe for each -> -> processes. -> -> System must provide an interface to set specific timeframe to obtain time slot per each process. -> -> System must provide a mechanism of resource sharing by time slot regarding CPU, storage -> -> bandwidth and network bandwidth. -> -> Scheduler should detect the status of resources for each thread. -> -> Scheduler must not run the specific thread for more than 10 micro second. -> -> Scheduler should guarantee that threads can run periodically. -> -> Scheduler should control the dispatches that occur extremely. -> -> Page 152 of 159 -> -> ![](media/picture269.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> 7.4.2.2.3 Release -> -> System must provide an interface to release all or partial resource which had obtained by -> -> specific process. -> -> System must provide a mechanism of resource releasing regarding memory resource. -> -> 7.4.2.2.4 Grouping -> -> System must provide a mechanism to group two or more processes regarding resource -> -> management such as priority, time slot and releasing. System must able to assign same -> -> attributes to grouped processes altogether. -> -> System must provide an interface to group two or more processes from other process. -> -> System must provide a mechanism to group regarding CPU, memory, storage bandwidth and -> -> network bandwidth. -> -> **7.4.3 Startup/Shutdown Control** -> -> Boot/Shutdown Control is a mechanism to control boot and shutdown of a program running in a -> -> user space. The order of boot/shutdown in the target program can be easily swapped depending -> -> on the product configuration. Boot/Shutdown Control supports both “static order” which -> -> boots/shuts down the program according to the static dependency of each program, and -> -> “dynamic order” which swaps the order dynamically in specific conditions. -> -> **7.4.3.1 Use Cases** -> -> (1) Static Modification of Boot/Shutdown Order -> -> a. -> Setting up of Boot/Shutdown Order Based on Product Configuration -> -> To support various product configurations, the integrator configures/modifies orders of boot/shutdown -> -> for all programs running on the target device. -> -> Page 153 of 159 -> -> ![](media/picture270.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> b. -> Configuring the Order of Boot/Shutdown during a Program Development -> -> In order to evaluate a developed program, the developer modifies only the order of the developed -> -> program in target programs. -> -> c\. Configuring the Order of Boot/Shutdown when Software Update -> -> Maintainer modifies the order of boot/shut down for a program to be updated when software update. -> -> (2) Dynamic Modification of Boot/Shutdown Order -> -> a. -> Prioritized Boot of the Features which the User was Previously Using -> -> It dynamically modifies the boot order of the target program in order for last used features (e.g. audio) to -> -> be operated by priority when ACC turns ON. -> -> b\. Prioritized Boot of Update Functionalities -> -> Update related programs are booted by priority when connected with maintenance kit and ACC turned -> -> ON. -> -> **7.4.3.2 Requirements** -> -> Boot/Shutdown Control shall start components, which are configured to be started. -> -> Boot/Shutdown Control shall ensure that dependent components are started in the order that -> -> has been configured. -> -> Boot/Shutdown Control shall start independent components in parallel. -> -> Boot/Shutdown Control shall stop components, which are requested to be stopped. -> -> Boot/Shutdown Control shall ensure that dependent components are stopped in the order that -> -> has been configured. -> -> Page 154 of 159 -> -> ![](media/picture271.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Boot/Shutdown Control shall be configurable by run level to start corresponding modules. -> -> **7.4.4 Database** -> -> Due to the nature of AGL operating environment, it is very important for DB engine to guarantee -> -> database instance integrity after power failures. Other important feature for generic system -> -> database engine is rich set of bindings to various programming languages. -> -> Below is short summary for better understanding of DBS Requirements and References -> -> hierarchy. -> -> 1. Power failure tolerance (P1) -> -> 2. Quick recovery after power loss (P1) -> -> 3. Multi-threaded I/O (P1) -> -> 4. API bindings for C programming language -> -> 5. On-demand integrity checker (P2) -> -> DB instance integrity must be ensured after power failures under heavy load of read and write -> -> DB transactions. -> -> DB engine must be able to quickly restore good data state after unexpected power interruption. -> -> Such recovery should not add more than a second to the normal boot process after power -> -> failure on idle system. -> -> DB engine must allow read and write access to DB instance from multiple threads and/or -> -> processes simultaneously. -> -> DB engine API must be available for C-based applications. -> -> DB engine should have DB instance integrity checking tool with ability to execute it on-demand. -> -> DB engine must be able to quickly restore to a previously defined state after unexpected power -> -> interruption during adding some data. -> -> Page 155 of 159 -> -> ![](media/picture272.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> DB engine should have availability to merge some data from internal and external databases, -> -> such as vehicle information database and databases at data center. -> -> And DB engine should have accessibility to allow read access to DB instance during merging. -> -> Also, DB engine should have durability not to break its data after unexpected power interruption -> -> during merging. -> -> **7.4.5 System Update** -> -> Maintenance of in-vehicle devices is also an important role for any automotive system. There are -> -> numerous use cases for updating the device software such as software failure,security patching, -> -> bug fixes, and new features. Because automotive devices are battery operated and subject to -> -> power cuts any System Updates must be robust enough to withstand sudden power loss. -> -> System Update module should have a Robust version up function. -> -> System Update moduleshould have a system difference version up function. -> -> There should be a data update structure for each file or package (same as WindowsUpdate or -> -> apt of Linux distribution). -> -> There should be a data update structure for each file or package (same as WindowsUpdate or -> -> apt of Linux distribution). -> -> Difference update should be enabled for kernel, middle ware and application. -> -> If power discontinuity (forced restart) occurs during update for differences, the system should -> -> be recovered after choosing the status (before or after update) for each update target. -> -> If power discontinuity (forced restart) occurs during update for differences, the status (during -> -> update) should be detected and the system should restart. -> -> Time required for applying patch should be 5 minutes maximum for single 10MByte data. -> -> Page 156 of 159 -> -> ![](media/picture273.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> Memory usage for difference update should be maximum 1Mbyte. -> -> Unit amount for difference data should be 10MByte maximum for difference update. -> -> System Update moduleshould have full version up function for whole system. -> -> Kernel, middle ware and application should be mass updated. System structure should allow -> -> mass update. -> -> There should be mass update structure for kernel, middle ware and application. -> -> If power discontinuity (forced restart) occurs while mass update of kernel, middle ware and -> -> application, the status (during update) should be detected and the system should restart. -> -> If power discontinuity (forced restart) occurs while mass update of kernel, middle ware and -> -> application, the status (during update) should be detected and the system should restart. -> -> 7.5 Device Drivers -> -> Device drivers may be in kernel space or user space or a combination of both. -> -> **7.5.1 Peripherals** -> -> Typical IO device drivers such as SPI, USB, memory, I2C that are typically present on a SOC. -> -> The flash process must be robust with an endurance of more than 10k write/erase cycles and -> -> data retention over 15-years/10 ppm, assuming application specific worst-case conditions. For -> -> optimised timing for downloading and restoring data the programming access time shall be less -> -> than 50 s/byte average. -> -> The EEPROM process must be robust with an endurance of more than 100k write/erase cycles -> -> and data retention over 15 years/10ppm. Higher programming voltage than 5 V for Flash or -> -> EEPROM is not allowed. -> -> Page 157 of 159 -> -> ![](media/picture274.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> In applications that need to save data at power down, the programming access time must be -> -> fast. (target <1ms/byte) -> -> N.B. EEPROM functionality can be emulated in flash memory passing the requirements above. -> -> **7.5.2 Graphics Drivers** -> -> Graphics drivers provide the interface to the graphical resources (e.g., GPU) within the system. -> -> This may include on-board graphical resources or a separate GPU from the main SOC. -> -> **7.5.3 Video Drivers** -> -> Video codecs allow the system to decode and/or encode video for playback or recording. Video -> -> codecs will nearly always be hardware based. -> -> **7.5.3.1 Requirements** -> -> The system shall provide device drivers to access any hardware implementation of video -> -> functionality. -> -> **7.5.4 Audio Codecs** -> -> **7.5.4.1 Requirements** -> -> Automotive Grade Linux BSPs shall provide devices drivers to access audio codecs that are -> -> implemented in hardware. -> -> Automotive Grade Linux BSPs should provide software implementations for those audio codecs -> -> that are required for AGL-based products and not supported in hardware. -> -> **7.5.5 Automotive Devices** -> -> Device drivers for automotive related devices. This may includes buses such as CAN, MOST, or -> -> *LIN. Device drivers may be required for receivers (AM, FM, SDARS, etc). Drivers may also be* -> -> Page 158 of 159 -> -> ![](media/picture275.jpeg)Automotive Grade Linux Requirements Spec v1.0 -> -> May 28, 2015 -> -> required to directly interface to sensors that may not be on the bus such as gyros used for -> -> navigation or an air bag sensor for a telematics system. -> -> **8 Notices** -> -> Linux is a registered trademark of Linus Torvalds. -> -> The Linux Foundation and Yocto Project are registered trademarks of The Linux Foundation. -> -> Bluetooth is a registered trademark of the Bluetooth SIG Inc. -> -> Miracast is a registered trademark of the Wi-Fi Alliance. -> -> MirrorLink is a certification mark of the Car Connectivity Consortium. -> -> AirPlay is a trademark of Apple, Inc. -> -> Page 159 of 159 |