From 6b8a73afda76cc02761a4377882c84f2b9e4222c Mon Sep 17 00:00:00 2001 From: Ossama Othman Date: Tue, 16 Sep 2014 13:56:56 -0700 Subject: [PATCH] Launch SDL HMIs via xwalk-launcher. Since there is currently no browser in Tizen IVI, package the SDL sample HMI as a Crosswalk widget, and have the SDL core launch the HMI via xwalk-launcher. Bug-Tizen: TC-244 Change-Id: I801fae70380b2dd3df114d12d12ec59c094c23bd Signed-off-by: Ossama Othman --- SDL_Core/CMakeLists.txt | 3 +-- SDL_Core/src/appMain/appMain.cpp | 1 - packaging/config.xml | 23 ++++++++++++++++++++++ packaging/manifest.json | 12 ++++++++++++ packaging/smartdevicelink.spec | 42 +++++++++++++++++++++++++++++----------- 5 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 packaging/config.xml create mode 100644 packaging/manifest.json diff --git a/SDL_Core/CMakeLists.txt b/SDL_Core/CMakeLists.txt index 6c45010..70bec38 100644 --- a/SDL_Core/CMakeLists.txt +++ b/SDL_Core/CMakeLists.txt @@ -17,8 +17,7 @@ set(CMAKE_CXX_FLAGS_RELEASE "-s") #It will be appended to CMAKE_CXX_FLAGS in rel add_definitions(-DSDL_LOG4CXX_PROPERTIES_FILE="/etc/smartdevicelink/log4cxx.properties") add_definitions(-DSDL_HMI_LINK_FILE="/etc/smartdevicelink/hmi_link") -add_definitions(-DSDL_HMI_BROWSER_PATH="/usr/bin/xwalk" -DSDL_HMI_BROWSER_ARG0="xwalk" -DSDL_HMI_BROWSER_ARG1="") -add_definitions(-DSDL_AUDIO_SAMPLE="/usr/share/smartdevicelink/audio.8bit.wav") +add_definitions(-DSDL_HMI_BROWSER_PATH="/usr/bin/xwalk-launcher" -DSDL_HMI_BROWSER_ARG0="xwalk-launcher" -DSDL_HMI_BROWSER_ARG1="") option( BUILD_SHARED_LIBS "Build all libraries as shared (if ON) or static (if OFF)" OFF) diff --git a/SDL_Core/src/appMain/appMain.cpp b/SDL_Core/src/appMain/appMain.cpp index e20aa5f..9a8b934 100644 --- a/SDL_Core/src/appMain/appMain.cpp +++ b/SDL_Core/src/appMain/appMain.cpp @@ -124,7 +124,6 @@ file_str.close(); if (stat(hmi_link.c_str(), &sb) == -1) { LOG4CXX_INFO(logger, "HMI index.html doesn't exist!"); - return false; } // Create a child process. pid_hmi = fork(); diff --git a/packaging/config.xml b/packaging/config.xml new file mode 100644 index 0000000..bf45b6a --- /dev/null +++ b/packaging/config.xml @@ -0,0 +1,23 @@ + + + + + + + SmartDeviceLink + + + + + + + + + + + + diff --git a/packaging/manifest.json b/packaging/manifest.json new file mode 100644 index 0000000..cefc5bc --- /dev/null +++ b/packaging/manifest.json @@ -0,0 +1,12 @@ +{ + "name": "SmartDeviceLink HMI", + "xwalk_version": "0.0.2", + "app": { + "launch":{ + "local_path": "index.html" + } + }, + "icons": { + "128": "images/sdl/devices.png" + } +} diff --git a/packaging/smartdevicelink.spec b/packaging/smartdevicelink.spec index 6abb140..6f673b7 100644 --- a/packaging/smartdevicelink.spec +++ b/packaging/smartdevicelink.spec @@ -1,13 +1,18 @@ +%define WIDGET_INSTALL_DIR /opt/usr/apps/.preinstallWidgets +%define WIDGET_PATH %{WIDGET_INSTALL_DIR}/%{name}.wgt + Name: smartdevicelink Summary: GENIVI SmartDeviceLink (SDL) Version: 2.0 Release: 1 -Group: Network & Connectivity/Connection Management +Group: Automotive/GENIVI License: BSD-3-Clause URL: http://projects.genivi.org/smartdevicelink/ Source: %{name}-%{version}.tar.gz Source1: %{name}.xml Source1001: %{name}.manifest +Source2001: config.xml +Source2002: manifest.json BuildRequires: cmake BuildRequires: pkgconfig(bluez) BuildRequires: pkgconfig(gstreamer-1.0) @@ -16,8 +21,8 @@ BuildRequires: pkgconfig(liblog4cxx) BuildRequires: pkgconfig(avahi-client) BuildRequires: pkgconfig(libpulse-simple) BuildRequires: doxygen -BuildRequires: fdupes -Requires: avahi-libs +BuildRequires: zip +Requires: crosswalk Requires(post): /usr/bin/pkg_initdb # Custom SDL-enabled HMIs should "Provide" this virtual package. @@ -87,19 +92,30 @@ install -m 0755 SDL_Core/src/thirdPartyLibs/MessageBroker/libMessageBroker.so %{ install -m 0755 SDL_Core/src/thirdPartyLibs/jsoncpp/libjsoncpp.so %{buildroot}%{_libdir} # Sample HMI -mkdir -p %{buildroot}%{_datadir}/%{name} -install -m 0644 SDL_Core/src/appMain/audio.8bit.wav %{buildroot}%{_datadir}/%{name} -cp -R SDL_Core/src/components/HMI %{buildroot}%{_datadir}/%{name} -%fdupes -s %{buildroot}%{_datadir}/%{name} +# The SDL HMI will be launched with xwalk-launcher so package it as a +# Crosswalk widget. +mkdir -p %{buildroot}/%{WIDGET_INSTALL_DIR} +cd %{dirname:%SOURCE2001} \ + && zip %{buildroot}%{WIDGET_PATH} config.xml manifest.json \ + && cd - +cd SDL_Core/src/components/HMI \ + && zip -r %{buildroot}%{WIDGET_PATH} . \ + && cd - # Create the 'hmi_link' file with the location of the sample HMI. -echo %{_datadir}/%{name}/HMI/index.html > %{buildroot}%{_sysconfdir}/%{name}/hmi_link +# Normally this would be the path to the top-level index.html file for +# the SDL HMI, e.g. %%{_datadir}/%%{name}/HMI/index.html. However, +# since we are using xwalk-laucher to launch the HMI we must instead +# provide the SDL Crosswalk application ID, i.s. SmartDeviceLink, +# instead. +echo SDL0000001.SmartDeviceLink > %{buildroot}%{_sysconfdir}/%{name}/hmi_link # Install Tizen package metadata for smartdevicelink mkdir -p %{buildroot}%{_datadir}/packages/ mkdir -p %{buildroot}%{_datadir}/icons/default/small install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/packages/%{name}.xml -ln -sf %{_datadir}/%{name}/HMI/images/sdl/devices.png %{buildroot}%{_datadir}/icons/default/small/ +install -m 0644 SDL_Core/src/components/HMI/images/sdl/devices.png \ + %{buildroot}%{_datadir}/icons/default/small/ %clean @@ -107,19 +123,23 @@ ln -sf %{_datadir}/%{name}/HMI/images/sdl/devices.png %{buildroot}%{_datadir}/ic %post sample-hmi /usr/bin/pkg_initdb +su app -c "xwalkctl -i /opt/usr/apps/.preinstallWidgets/%{name}.wgt" %postun -p /sbin/ldconfig +%postun sample-hmi +/usr/bin/pkg_initdb +su app -c "xwalkctl -u $(su app -c "xwalkctl list | grep SmartDeviceLink | cut -c 1-32")" + %files %manifest %{name}.manifest %license LICENSE %{_bindir}/smartDeviceLinkCore %{_libdir}/*.so* %config %{_sysconfdir}/%{name}/log4cxx.properties -%{_datadir}/%{name}/audio.8bit.wav %files sample-hmi %config %{_sysconfdir}/%{name}/hmi_link -%{_datadir}/%{name}/HMI/* %{_datadir}/packages/%{name}.xml %{_datadir}/icons/default/small/*.png +/opt/usr/apps/.preinstallWidgets/%{name}.wgt -- 2.7.4