[PATCH weston-ivi-shell 00/15] a reference shell for In-Vehicle Infotainment system

nobuhiko_tanibata nobuhiko_tanibata at xddp.denso.co.jp
Thu Mar 6 01:19:01 PST 2014


This patch series adds a reference implementation of a shell for 
In-Vehicle Infotainment system; IVI, libraries on the shell to manage 
layout of User interface; UI, and samples how to use them. Before 
stepping in overview of patches, please let me explain background and 
purpose of this contribution.

I am working for prototyping a shell for In-Vehicle Infotainment; IVI in 
TIZEN IVI. This prototyping is being integrated to the TIZEN IVI.


I am also working for GENIVI wayland-ivi-extension and several private 
projects with several Car Makers to apply a shell to its use case. The 
main use case on them is very similar with each other, which is based on 
a concept of Layer Management.


I am contributing a reference for common use case of IVI mentioned in 
Background to avoid implementing same one for each user. The main use 
case is Layer Management to manage properties of surfaces and layer. 
Layer is used for grouping surfaces. In this patch series, I am 
contributing libweston-layout.so to support Layer management features 
with a set of interfaces which are defined based on ivi-layer-management 
from GENIVI. With libweston-layout.so, each shell developer of IVI can 
easily implement own shell.

This patch series are mainly applied to new folder “ivi-shell” like 
“desktop-shell”. This patch series consists of 5 major parts,

- ivi-shell.so : support ivi-application.xml protocol and initialization 
of libweston-layout.so. The ivi-application.xml defines simple 
interfaces; “ivi_application::surface_create”. An interface 
ivi_application::surface_create” is used to tie ID to wl_surface from 
application. In IVI use case, such IDs are predefined at system design 
phase to control surface with business logic. For example, TV 
application shall be invisible in case of speed restriction.

- libweston-layout.so: this shall be linked to ivi-shell.so to support 
layer management APIs internally. These APIs allows us to manage 
surfaces and layer by e.g. setting properties; position, visibility, 
opacity and rectangle of source to crop, and so on. This APIs internally 
uses weston_view as abstraction layer of compositor.

- hmi-controller.so: a reference implementation how to use 
libweston-layout.so. It implement several protocols defined by 

1/Requesting which surface is a part of User interfaces, e.g. a surface 
draw an icon from PNG files. According to request, hmi-controller 
layouts specified surfaces on a Screen by using libweston-layout.so.
2/Requesting layout change. There are 4 types of layout for a reference; 
tiling, side by side, full screen, and random.
3/Requesting displaying launchers. There are several pages to group 
icons which can be selected by motion of input.
4/Requesting animation moving from one page to another by motion of 
A reference how to use these protocols are implemented in 
hmi-controller-homescreen. A pthread sets up parts of UI and triggers 
layout change, showing launchers, and allowing hmi-controller to select 
pages of launchers by using ivi-hmi-controller.xml. This can be 
implemented in separated process, e.g. desktop-shell.c, as well.

- Supporting ivi-application protocol to example in “clients” folder.
Add macro to compile ivi-application separately. Basically it uses the 
same code. For example, add macro: ENABLE_IVI_CLIENT to simple-egl.c for 
compiling weston-simple-egl-ivi at the same time.

- Add reference weston.ini.in for ivi-shell in ivi-shell folder as well. 
It is referred by ivi-shell and hmi-controller.so to define several 
configurations. E.g. setting cursor, ID of surfaces and layers to be 
used by hmi-controller-homescreen, launchers; path to icons, binary, ID 
which page they are located.

I am enclosing a pdf for overview of ivi-shell related parts. The pdf 
also mentions ivi-controller.so maintained here to keep compatibility 
with IVI layer manager.


It allow GENIVI graphic application to manage surfaces/layer outside of 
Weston process. However it is not purpose to do animation. Ideally, 
business logic shall be implemented inside of Weston process to reduce 
dispatch of process as much as possible.

Best regards,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: weston_ivi_shell_contribution.pdf
Type: application/pdf
Size: 103516 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20140306/f4f60a84/attachment-0001.pdf>

More information about the wayland-devel mailing list