[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
Hi,
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.
Background)
I am working for prototyping a shell for In-Vehicle Infotainment; IVI in
TIZEN IVI. This prototyping is being integrated to the TIZEN IVI.
https://review.tizen.org/git/?p=profile/ivi/weston-ivi-shell.git;a=summary
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.
http://projects.genivi.org/ivi-layer-management/node/13
Purpose)
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.
Overview)
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
ivi-hmi-controller.xml,
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
input.
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.
http://git.projects.genivi.org/?p=wayland-ivi-extension.git;a=summary
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,
Nobuhiko
-------------- 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