summaryrefslogtreecommitdiffstats
path: root/docs/agl-specs-v1.0/04-app-fw.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/agl-specs-v1.0/04-app-fw.md')
-rw-r--r--docs/agl-specs-v1.0/04-app-fw.md1499
1 files changed, 1499 insertions, 0 deletions
diff --git a/docs/agl-specs-v1.0/04-app-fw.md b/docs/agl-specs-v1.0/04-app-fw.md
new file mode 100644
index 0000000..c88cb04
--- /dev/null
+++ b/docs/agl-specs-v1.0/04-app-fw.md
@@ -0,0 +1,1499 @@
+---
+
+title : Application Framwork
+author: imported from Doors-ng by Fulup(iot.bzh)
+date : 2016-06-30
+categories: architecture, automotive
+tags: architecture, automotive, linux
+layout: techdoc
+
+---
+
+## 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
+
+Automotive Grade Linux Requirements Spec v1.0 ![](../media/picture114.jpeg)
+{: class="image"}
+
+May  28,  2015
+
+### Application  Manager
+Application  Manager  describes  requirements  for  AGL  application  lifecycle  function.  Application
+lifecycle  contains  application  installation/removal  and  launch/hide/resume/kill.
+
+### 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.
+
+### 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
+
+#### Use Case
+Please  refer  “screen  resource  control”  of  Policy  Manger  section.
+
+#### 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
+#### 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.