--- /dev/null
+[general]
+upstream_branch = upstream
+upstream_tag = ${upstreamversion}
--- /dev/null
+# OS Generated Files #
+.DS_Store
+Thumbs.db
+*.o
+*.so*
+*.a
+*~
+*#*#
+Makefile
+core*
endif()
set(CMAKE_CXX_FLAGS_RELEASE "-fPIC -s -O2") #It will be appended to CMAKE_CXX_FLAGS in release
+add_definitions(-DSDL_LOG4CXX_PROPERTIES_FILE="/etc/smartdevicelink/log4cxx.properties")
+add_definitions(-DSDL_HMI_LINK_FILE="/etc/smartdevicelink/hmi_link")
+add_definitions(-DSDL_CONFIG_FILE="/etc/smartdevicelink/smartDeviceLink.ini")
+add_definitions(-DSDL_HMI_BROWSER_PATH="/usr/bin/xwalk-launcher" -DSDL_HMI_BROWSER_ARG0="xwalk-launcher")
+
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_definitions(-DOS_LINUX)
elseif(CMAKE_SYSTEM_NAME STREQUAL "QNX")
--- /dev/null
+Copyright (c) 2013, Ford Motor Company
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+* Neither the name of the Ford Motor Company nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets"
+ id="http://com.intel.tizen/smartdevicelink" version="%SDL_VERSION%" viewmodes="maximized">
+ <access origin="*" subdomains="true"></access>
+ <tizen:application id="%SDL_APPID%"
+ package="%SDL_PKGID%" required_version="2.0" />
+ <content src="index.html" />
+ <icon src="images/sdl/devices.png" />
+ <name>SmartDeviceLink</name>
+ <tizen:privilege name="http://tizen.org/privilege/application.launch" />
+ <tizen:privilege name="http://tizen.org/privilege/filesystem.read" />
+ <tizen:privilege name="http://tizen.org/privilege/filesystem.write" />
+ <tizen:privilege name="http://tizen.org/privilege/fullscreen" />
+ <tizen:privilege name="http://tizen.org/privilege/content.read" />
+ <tizen:privilege name="http://tizen.org/privilege/bluetooth.admin" />
+ <tizen:privilege name="http://tizen.org/privilege/bluetooth.spp" />
+ <tizen:privilege name="http://tizen.org/privilege/bluetooth.gap" />
+ <tizen:privilege name="http://tizen.org/privilege/speech" />
+ <tizen:privilege name="http://tizen.org/privilege/vehicle" />
+ <tizen:setting screen-orientation="portrait"
+ context-menu="enable" background-support="disable" encryption="disable"
+ install-location="auto" hwkey-event="enable" />
+</widget>
--- /dev/null
+{
+ "name": "SmartDeviceLink HMI",
+ "xwalk_version": "%SDL_VERSION%",
+ "app": {
+ "launch":{
+ "local_path": "index.html"
+ }
+ },
+ "icons": {
+ "128": "images/sdl/devices.png"
+ }
+}
--- /dev/null
+* Thu Nov 06 2014 Ossama Othman <ossama.othman@intel.com> b01151e
+- Package SmartDeviceLink 3.5.
+
+* Thu Aug 07 2014 Ossama Othman <ossama.othman@intel.com> accepted/tizen/ivi/panda/20140403.015744-2-g2948856
+- Remove dependency to MiniBrowser
+- Make SmartDeviceLink work with Crosswalk.
+
+* Thu Mar 06 2014 Ossama Othman <ossama.othman@intel.com> 66d2006
+- Added missing dependencies.
+- Remove executable bit from JavaScript and CSS files.
+- Update to 2.0 release.
+- Removed editor backup files shipped upstream SDL code.
+
+* Tue Dec 17 2013 Ossama Othman <ossama.othman@intel.com> ivi_oct_m2@f3d53b2
+- [TIVI-2269] Support launching SDL from ICO homescreen.
+
+* Thu Aug 15 2013 Ossama Othman <ossama.othman@intel.com> 14ffb07
+- Override hardcoded paths and filenames.
+- Added missing shared libraries to package.
+- Corrected packaging errors, and created new sample-hmi sub-package.
+- Removed executable bits from non-executable files.
+- Initial packaging of SmartDeviceLink.
+- Address build errors when using g++ 4.7 or better.
+
--- /dev/null
+<manifest>
+ <request>
+ <domain name="User"/>
+ </request>
+</manifest>
--- /dev/null
+%define SDL_PKGID SDL0000001
+%define SDL_APPID %{SDL_PKGID}.SmartDeviceLink
+
+Name: smartdevicelink
+Summary: GENIVI mobile device and HMI integration
+Version: 3.5
+Release: 1
+Group: Automotive/GENIVI
+License: BSD-3-Clause
+URL: http://projects.genivi.org/smartdevicelink/
+Source: %{name}-%{version}.tar.gz
+Source1001: %{name}.manifest
+Source2001: config.xml.in
+Source2002: manifest.json.in
+BuildRequires: cmake
+BuildRequires: pkgconfig(bluez)
+BuildRequires: pkgconfig(gstreamer-1.0)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(liblog4cxx)
+BuildRequires: pkgconfig(avahi-client)
+BuildRequires: pkgconfig(libpulse-simple)
+BuildRequires: pkgconfig(libtzplatform-config)
+BuildRequires: pkgconfig(expat)
+BuildRequires: pkgconfig(libcrypto)
+BuildRequires: pkgconfig(libudev)
+BuildRequires: pkgconfig(sqlite3)
+BuildRequires: doxygen
+BuildRequires: zip
+Requires: crosswalk
+
+# Custom SDL-enabled HMIs should "Provide" this virtual package.
+Requires: smartdevicelink-hmi
+
+%description
+SmartDeviceLink is a project which intends to standardize and wrap the
+many in-vehicle interfaces which may exist in the automotive
+context. The end goal is to provide an expandable software framework
+to both mobile application developers and automotive head unit
+creators for the creation of brought-in applications that appear
+integrated onto a head unit.
+
+Many in-vehicle HMIs use different colors, templates, icons, fonts,
+voice systems and input methods for their infotainment systems. With
+SmartDeviceLink, a template-based approach is provided by the
+automotive head unit and allows for different HMI frameworks to follow
+a specific set of guidelines ensuring a consistent experience to a
+developer. By leveraging this common API and a brought-in device,
+automotive head units leverage the complete power of the brought-in
+device using the APIs being executed on the mobile device.
+
+%package sample-hmi
+Summary: Sample HMI
+Provides: smartdevicelink-hmi
+
+%description sample-hmi
+This package contains a sample/reference HMI.
+
+%prep
+%setup -q -n %{name}-%{version}
+cp %{SOURCE1001} .
+
+%build
+mkdir html5_build
+pushd html5_build
+# For the Qt based HMI add -DHMI2=ON to the cmake command line flags.
+%cmake .. -DEXTENDED_MEDIA_MODE=ON
+make %{?_smp_mflags}
+popd
+
+%install
+
+mkdir -p %{buildroot}%{_bindir} %{buildroot}%{_libdir}
+mkdir -p %{buildroot}%{_datadir}/%{name}
+mkdir -p %{buildroot}%{_sysconfdir}/%{name}
+
+pushd html5_build/src/appMain
+install -m 0755 smartDeviceLinkCore %{buildroot}%{_bindir}
+install -m 0755 libPolicy.so %{buildroot}%{_libdir}
+popd
+
+pushd src/appMain
+install -m 0644 audio.8bit.wav %{buildroot}%{_datadir}/%{name}
+install -m 0644 \
+ log4cxx.properties \
+ hmi_capabilities.json \
+ policy_table.json \
+ sdl_preloaded_pt.json \
+ sdl_update_pt.json \
+ %{buildroot}%{_sysconfdir}/%{name}
+sed -e 's,= \(.*\)\.json,= %{_sysconfdir}/%{name}/\1\.json,g' \
+ -e 's,= \(audio.8bit.wav\),= %{_datadir}/%{name}/\1,' \
+ smartDeviceLink.ini > \
+ %{buildroot}%{_sysconfdir}/%{name}/smartDeviceLink.ini
+popd
+
+pushd html5_build/src/components
+install -m 0755 rpc_base/librpc_base.so %{buildroot}%{_libdir}
+install -m 0755 utils/libUtils.so %{buildroot}%{_libdir}
+install -m 0755 connection_handler/libconnectionHandler.so %{buildroot}%{_libdir}
+install -m 0755 request_watchdog/libRequestWatchdog.so %{buildroot}%{_libdir}
+install -m 0755 resumption/libResumption.so %{buildroot}%{_libdir}
+install -m 0755 smart_objects/libSmartObjects.so %{buildroot}%{_libdir}
+install -m 0755 policy/src/policy/sqlite_wrapper/libdbms.so %{buildroot}%{_libdir}
+install -m 0755 policy/src/policy/policy_table/table_struct/libpolicy_struct.so %{buildroot}%{_libdir}
+install -m 0755 policy/src/policy/usage_statistics/libUsageStatistics.so %{buildroot}%{_libdir}
+install -m 0755 policy/src/policy/libPolicy.so %{buildroot}%{_libdir}
+install -m 0755 transport_manager/libTransportManager.so %{buildroot}%{_libdir}
+install -m 0755 protocol_handler/libProtocolHandler.so %{buildroot}%{_libdir}
+install -m 0755 hmi_message_handler/libHMIMessageHandler.so %{buildroot}%{_libdir}
+install -m 0755 config_profile/libConfigProfile.so %{buildroot}%{_libdir}
+install -m 0755 interfaces/libMOBILE_API.so %{buildroot}%{_libdir}
+install -m 0755 interfaces/libv4_protocol_v1_2_no_extra.so %{buildroot}%{_libdir}
+install -m 0755 interfaces/libHMI_API.so %{buildroot}%{_libdir}
+install -m 0755 application_manager/libApplicationManager.so %{buildroot}%{_libdir}
+install -m 0755 time_tester/libTimeTester.so %{buildroot}%{_libdir}
+install -m 0755 media_manager/libMediaManager.so %{buildroot}%{_libdir}
+install -m 0755 formatters/libformatters.so %{buildroot}%{_libdir}
+popd
+
+pushd html5_build/src/thirdPartyLibs
+install -m 0755 encryption/libencryption.so %{buildroot}%{_libdir}
+install -m 0755 MessageBroker/libMessageBrokerClient.so %{buildroot}%{_libdir}
+install -m 0755 MessageBroker/libMessageBrokerServer.so %{buildroot}%{_libdir}
+install -m 0755 MessageBroker/libMessageBroker.so %{buildroot}%{_libdir}
+install -m 0755 libusbx-1.0.16/libLibusb-1.0.16.so %{buildroot}%{_libdir}
+install -m 0755 jsoncpp/libjsoncpp.so %{buildroot}%{_libdir}
+popd
+
+# Sample HMI
+# The SDL HMI will be launched with xwalk-launcher so package it as a
+# Crosswalk widget.
+mkdir -p %{buildroot}%{TZ_SYS_APP_PREINSTALL}
+pushd %{dirname:%SOURCE2001}
+sed -e 's/%%SDL_PKGID%%/%{SDL_PKGID}/' \
+ -e 's/%%SDL_APPID%%/%{SDL_APPID}/' \
+ -e 's/%%SDL_VERSION%%/%{version}/' %{SOURCE2001} > config.xml
+sed -e 's/%%SDL_VERSION%%/%{version}/' %{SOURCE2002} > manifest.json
+zip %{buildroot}%{TZ_SYS_APP_PREINSTALL}/%{name}.wgt config.xml manifest.json
+rm config.xml manifest.json
+popd
+pushd src/components/HMI
+zip -r %{buildroot}%{TZ_SYS_APP_PREINSTALL}/%{name}.wgt .
+popd
+
+# Create the 'hmi_link' file with the location of the sample HMI.
+# 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 %{SDL_APPID} > %{buildroot}%{_sysconfdir}/%{name}/hmi_link
+
+%clean
+
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%files
+%manifest %{name}.manifest
+%license LICENSE
+%{_bindir}/smartDeviceLinkCore
+%{_libdir}/*.so*
+%config %{_sysconfdir}/%{name}/log4cxx.properties
+
+%files sample-hmi
+%manifest %{name}.manifest
+%config %{_sysconfdir}/%{name}/*
+%exclude %{_sysconfdir}/%{name}/log4cxx.properties
+%{_datadir}/%{name}/*
+%{TZ_SYS_APP_PREINSTALL}/%{name}.wgt
// ----------------------------------------------------------------------------
+#ifndef SDL_LOG4CXX_PROPERTIES_FILE
+#define SDL_LOG4CXX_PROPERTIES_FILE "log4cxx.properties"
+#endif
+
+#ifndef SDL_HMI_LINK_FILE
+#define SDL_HMI_LINK_FILE "hmi_link"
+#endif
+
+#ifndef SDL_HMI_BROWSER_PATH
+#define SDL_HMI_BROWSER_PATH "/usr/bin/chromium-browser"
+#define SDL_HMI_BROWSER_ARG0 "chromium-browser"
+#define SDL_HMI_BROWSER_ARG1 "--auth-schemes=basic,digest,ntlm"
+#endif
+
CREATE_LOGGERPTR_GLOBAL(logger, "appMain")
namespace {
-const std::string kBrowser = "/usr/bin/chromium-browser";
-const std::string kBrowserName = "chromium-browser";
-const std::string kBrowserParams = "--auth-schemes=basic,digest,ntlm";
+const std::string kBrowser = SDL_HMI_BROWSER_PATH;
+const std::string kBrowserName = SDL_HMI_BROWSER_ARG0;
+
+#ifdef SDL_HMI_BROWSER_ARG1
+const std::string kBrowserParams = SDL_HMI_BROWSER_ARG1;
+#endif
+
const std::string kLocalHostAddress = "127.0.0.1";
const std::string kApplicationVersion = "SDL_RB_B3.5";
bool InitHmi() {
struct stat sb;
-if (stat("hmi_link", &sb) == -1) {
+if (stat(SDL_HMI_LINK_FILE, &sb) == -1) {
LOG4CXX_FATAL(logger, "File with HMI link doesn't exist!");
return false;
}
std::ifstream file_str;
-file_str.open("hmi_link");
+file_str.open(SDL_HMI_LINK_FILE);
if (!file_str.is_open()) {
LOG4CXX_FATAL(logger, "File with HMI link was not opened!");
file_str.close();
if (stat(hmi_link.c_str(), &sb) == -1) {
- LOG4CXX_FATAL(logger, "HMI index.html doesn't exist!");
- return false;
+ LOG4CXX_INFO(logger, "HMI index.html doesn't exist!");
+ // The hmi_link file in Tizen contains the Crosswalk application ID,
+ // not a top-level HMI web page such as index.html, since we're
+ // launching the HMI through xwalk-launcher. Ignore the fact that
+ // such a file doesn't exist.
+ //
+ // return false;
}
- return utils::System(kBrowser, kBrowserName).Add(kBrowserParams).Add(hmi_link)
- .Execute();
+ return utils::System(kBrowser, kBrowserName)
+#ifdef SDL_HMI_BROWSER_ARG1
+ .Add(kBrowserParams)
+#endif
+ .Add(hmi_link).Execute();
}
#endif // WEB_HMI
// --------------------------------------------------------------------------
// Logger initialization
- INIT_LOGGER("log4cxx.properties");
+ INIT_LOGGER(SDL_LOG4CXX_PROPERTIES_FILE);
threads::Thread::SetNameForId(threads::Thread::CurrentId(), "MainThread");
if ((argc > 1)&&(0 != argv)) {
profile::Profile::instance()->config_file_name(argv[1]);
} else {
- profile::Profile::instance()->config_file_name("smartDeviceLink.ini");
+ profile::Profile::instance()->config_file_name(SDL_CONFIG_FILE);
}
#ifdef __QNX__
if(ENABLE_LOG OR HMI_DBUS_API)
+# Tizen: Use the expat package already provided by Tizen IVI.
+
# --- libexpat
- add_subdirectory(expat-2.1.0)
+# add_subdirectory(expat-2.1.0)
endif()
if(ENABLE_LOG)
+# Tizen: Use the log4cxx related packages already provided by Tizen IVI.
+
# --- libapr-1
- add_subdirectory(apr-cmake)
+# add_subdirectory(apr-cmake)
# --- apr-util
- add_subdirectory(apr-util-cmake)
+# add_subdirectory(apr-util-cmake)
# --- log4cxx
- add_subdirectory(apache-log4cxx-cmake)
- set(LOG4CXX_LIBS_DIRECTORY ${LOG4CXX_LIBS_DIRECTORY} PARENT_SCOPE)
+# add_subdirectory(apache-log4cxx-cmake)
+#set(LOG4CXX_LIBS_DIRECTORY ${LOG4CXX_LIBS_DIRECTORY} PARENT_SCOPE)
+set(LOG4CXX_LIBS_DIRECTORY /usr/lib PARENT_SCOPE)
endif()