diff options
author | <philippe colliot> | 2014-10-17 18:24:40 +0200 |
---|---|---|
committer | <philippe colliot> | 2014-10-17 18:24:40 +0200 |
commit | 1dd6909bdbd453b6edc661d5dfae5b074f6c7684 (patch) | |
tree | 5e2b3a21e8583823d1bd8a5eac04b68c8695642c | |
parent | 2de0fb16798f86ff80ccb4223089beffbab75c35 (diff) | |
download | navigation-1dd6909bdbd453b6edc661d5dfae5b074f6c7684.tar.gz |
some updates for ilm migration (preliminary)
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | src/CMakeLists.txt | 25 | ||||
-rw-r--r-- | src/hmi/qml/CameraSettings.qml | 30 | ||||
-rw-r--r-- | src/hmi/qml/Core/genivi.js | 4 | ||||
-rw-r--r-- | src/hmi/qml/Entry.qml | 4 | ||||
-rw-r--r-- | src/hmi/qml/EntrySimple.qml | 3 | ||||
-rw-r--r-- | src/hmi/qml/NavigationBrowseMap.qml | 76 | ||||
-rw-r--r-- | src/hmi/qml/application.qml | 8 | ||||
-rw-r--r-- | src/hmi/qml/hmi-launcher/CMakeLists.txt | 22 | ||||
-rw-r--r-- | src/hmi/qml/hmi-launcher/hmi-launcher.pro | 28 | ||||
-rw-r--r-- | src/hmi/qml/hmi-launcher/lm_control.cpp | 152 | ||||
-rw-r--r-- | src/hmi/qml/hmi-launcher/lm_control.h | 74 | ||||
-rw-r--r-- | src/hmi/qml/hmi-launcher/main.cpp | 25 | ||||
m--------- | src/ilm | 0 | ||||
-rw-r--r-- | src/patches/amb_allow_sessionbus.patch | 1 | ||||
-rw-r--r-- | src/patches/layer_management_cast_fix.patch | 13 | ||||
-rwxr-xr-x | src/script/build.sh | 47 | ||||
-rw-r--r-- | src/script/fsa-config.sh | 6 |
18 files changed, 422 insertions, 98 deletions
@@ -1,6 +1,8 @@ #folders *-debug/ *-release/ +*-Debug/ +*-Release/ /.project bin/ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d3c5662..c3d4e45 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -27,7 +27,7 @@ set (create_file cmake -E touch) # Check if navigation-service stuff with the right version has been cloned and do it if necessary set(navigation-service_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/navigation) set(navigation-service_URL http://git.projects.genivi.org/lbs/navigation.git) -set(navigation-service_VERSION 469f4bbb8e811ee024e2f831eceec79bd65578bd) +set(navigation-service_VERSION dfeb9609b0944109325b554cab2e50a2c7a04079) if (EXISTS ${navigation-service_SRC_DIR}) execute_process( @@ -39,8 +39,9 @@ if (EXISTS ${navigation-service_SRC_DIR}) if (${version} MATCHES ${navigation-service_VERSION}) message(STATUS "version of navigation-service up to date") else() - message(STATUS "get the right version") + message(STATUS "get the right version of navigation-service") execute_process( + COMMAND "${git_executable}" pull COMMAND "${git_executable}" checkout ${navigation-service_VERSION} WORKING_DIRECTORY "${navigation-service_SRC_DIR}" RESULT_VARIABLE error_code @@ -59,8 +60,9 @@ else() message(FATAL_ERROR "Failed to clone repository: '${navigation-service_URL}'") endif() - message(STATUS "get the right version") + message(STATUS "get the right version of navigation-service") execute_process( + COMMAND "${git_executable}" pull COMMAND "${git_executable}" checkout ${navigation-service_VERSION} WORKING_DIRECTORY "${navigation-service_SRC_DIR}" RESULT_VARIABLE error_code @@ -71,6 +73,7 @@ else() endif() # Check if automotive-message-broker stuff with the right version has been cloned and do it if necessary +# please consider that patches have been applied set(automotive-message-broker_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/automotive-message-broker) set(automotive-message-broker_URL https://github.com/otcshare/automotive-message-broker.git) set(automotive-message-broker_VERSION ac3fe53327a13afc571efe079a31a0472ea285a3) @@ -87,8 +90,9 @@ if (EXISTS ${automotive-message-broker_SRC_DIR}) if (${version} MATCHES ${automotive-message-broker_VERSION}) message(STATUS "version of automotive-message-broker up to date") else() - message(STATUS "get the right version") + message(STATUS "get the right version of automotive-message-broker") execute_process( + COMMAND "${git_executable}" pull COMMAND "${git_executable}" checkout ${automotive-message-broker_VERSION} WORKING_DIRECTORY "${automotive-message-broker_SRC_DIR}" RESULT_VARIABLE error_code @@ -106,8 +110,9 @@ else() if(error_code) message(FATAL_ERROR "Failed to clone repository: '${automotive-message-broker_URL}'") endif() - message(STATUS "get the right version") + message(STATUS "get the right version of automotive-message-broker") execute_process( + COMMAND "${git_executable}" pull COMMAND "${git_executable}" checkout ${automotive-message-broker_VERSION} WORKING_DIRECTORY "${automotive-message-broker_SRC_DIR}" RESULT_VARIABLE error_code @@ -119,9 +124,9 @@ endif() set (PATCH_EXECUTABLE patch -p1 -s) if (EXISTS ${automotive-message-broker_PATCH_DUMMY_FILE}) - message(STATUS "patch already applied") + message(STATUS "patch already applied to automotive-message-broker") else() - message(STATUS "apply the patch") + message(STATUS "apply the patch to automotive-message-broker") execute_process( COMMAND ${PATCH_EXECUTABLE} -i ${automotive-message-broker_PATCH_SRC_DIR}/amb_allow_sessionbus.patch COMMAND ${create_file} ${automotive-message-broker_PATCH_DUMMY_FILE} @@ -129,6 +134,10 @@ else() WORKING_DIRECTORY "${automotive-message-broker_SRC_DIR}" RESULT_VARIABLE error_code ) - message( STATUS "Patch result: ${error_code}, PROF SOURCE DIR: ${automotive-message-broker_SRC_DIR}" ) + if(error_code) + message(FATAL_ERROR "Failed to apply the patch") + endif() endif() + + diff --git a/src/hmi/qml/CameraSettings.qml b/src/hmi/qml/CameraSettings.qml index acdb790..08d2e09 100644 --- a/src/hmi/qml/CameraSettings.qml +++ b/src/hmi/qml/CameraSettings.qml @@ -94,20 +94,30 @@ HMIMenu { function showSurfaces() { + /**** Genivi.lm_message(dbusIf,"ServiceConnect",["uint32",dbusIf.pid()]); - Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",2000+Genivi.g_map_handle[1],"uint32",map.x,"uint32",map.y,"uint32",map.width,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",2000+Genivi.g_map_handle[1],"uint32",0,"uint32",0,"uint32",map.width,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",2000+Genivi.g_map_handle[1],"boolean",true]); + Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"uint32",map.x,"uint32",map.y,"uint32",map.width,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"uint32",0,"uint32",0,"uint32",map.width,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"boolean",true]); Genivi.lm_message(dbusIf,"CommitChanges",[]); Genivi.lm_message(dbusIf,"ServiceDisconnect",["uint32",dbusIf.pid()]); + ****/ + lm_control.surface_set_destination_rectangle(Genivi.g_layer+Genivi.g_map_handle[1], 7, 140, 1906/*map.width*/, 760/*map.height*/); + lm_control.surface_set_source_rectangle(Genivi.g_layer+Genivi.g_map_handle[1], 0, 0, map.width, map.height); + lm_control.surface_set_visibility(Genivi.g_layer+Genivi.g_map_handle[1], 1); + lm_control.commit_changes(); } function hideSurfaces() { + /**** Genivi.lm_message(dbusIf,"ServiceConnect",["uint32",dbusIf.pid()]); - Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",2000+Genivi.g_map_handle[1],"boolean",false]); + Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"boolean",false]); Genivi.lm_message(dbusIf,"CommitChanges",[]); Genivi.lm_message(dbusIf,"ServiceDisconnect",["uint32",dbusIf.pid()]); + ****/ + lm_control.surface_set_visibility(Genivi.g_layer+Genivi.g_map_handle[1], 0); + lm_control.commit_changes(); } function move_start(lat, lon) @@ -218,7 +228,8 @@ HMIMenu { function toggleSplit() { - hideSurfaces(); + if (Genivi.g_layer_manager == true) + hideSurfaces(); var res=Genivi.mapviewercontrol_message(dbusIf,"GetDisplayedRoutes",[]); var res3=Genivi.mapviewercontrol_message(dbusIf, "GetMapViewTheme", []); if (split.text == Genivi.gettext("Split")) { @@ -256,7 +267,8 @@ HMIMenu { } } } - showSurfaces(); + if (Genivi.g_layer_manager == true) + showSurfaces(); updateMapViewer(); } @@ -380,7 +392,8 @@ HMIMenu { Genivi.data['show_current_position']=true; move_stop(); camera_stop(); - hideSurfaces(); + if (Genivi.g_layer_manager == true) + hideSurfaces(); pageOpen("NavigationBrowseMap"); } } @@ -407,7 +420,8 @@ HMIMenu { } Component.onCompleted: { Genivi.map_handle(dbusIf,menu.width,menu.height,Genivi.MAPVIEWER_MAIN_MAP); - showSurfaces(); + if (Genivi.g_layer_manager == true) + showSurfaces(); updateMapViewer(); updateDayNight(); } diff --git a/src/hmi/qml/Core/genivi.js b/src/hmi/qml/Core/genivi.js index 9b8f8e0..a13b67a 100644 --- a/src/hmi/qml/Core/genivi.js +++ b/src/hmi/qml/Core/genivi.js @@ -39,6 +39,8 @@ var g_map_handle; var g_map_handle2; var g_poisearch_handle; var g_lang; +var g_layer_manager = false; //no layer manager by default +var g_layer; var data=new Array; @@ -54,6 +56,8 @@ var entrydest; var entrycriterion; var entryselectedentry; +var entrycancel = false; //set ti true when back button is pushed without any selection + var Maneuver = new Object; Maneuver[NAVIGATIONCORE_INVALID]="INVALID"; Maneuver[NAVIGATIONCORE_CRUISE]="CRUISE"; diff --git a/src/hmi/qml/Entry.qml b/src/hmi/qml/Entry.qml index 3f9b651..f6b4a82 100644 --- a/src/hmi/qml/Entry.qml +++ b/src/hmi/qml/Entry.qml @@ -159,9 +159,9 @@ HMIMenu { } next:back; prev:view} */ StdButton { id:back; text: "Back"; onClicked: { - Genivi.entrydest=null; disconnectSignals(); - Genivi.entryselectedentry=0; + Genivi.entrycancel=true; + Genivi.preloadMode=true; pageOpen(Genivi.entryback); } next:view; prev:keyboard} } diff --git a/src/hmi/qml/EntrySimple.qml b/src/hmi/qml/EntrySimple.qml index d5d9c60..6e8f2c3 100644 --- a/src/hmi/qml/EntrySimple.qml +++ b/src/hmi/qml/EntrySimple.qml @@ -71,7 +71,8 @@ HMIMenu { pageOpen(Genivi.entryback); } next:back; prev:keyboard} StdButton { id:back; text: "Back"; onClicked: { - Genivi.entrydest=null; + Genivi.entrycancel=true; + Genivi.preloadMode=true; pageOpen(Genivi.entryback); } next:keyboard; prev:ok} } diff --git a/src/hmi/qml/NavigationBrowseMap.qml b/src/hmi/qml/NavigationBrowseMap.qml index a928cda..378592f 100644 --- a/src/hmi/qml/NavigationBrowseMap.qml +++ b/src/hmi/qml/NavigationBrowseMap.qml @@ -352,33 +352,61 @@ HMIMenu { function showSurfaces() { - Genivi.lm_message(dbusIf,"ServiceConnect",["uint32",dbusIf.pid()]); - if (Genivi.g_map_handle2) { - Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",2000+Genivi.g_map_handle[1],"uint32",map.x,"uint32",map.y,"uint32",map.width/2,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",2000+Genivi.g_map_handle[1],"uint32",0,"uint32",0,"uint32",map.width/2,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",2000+Genivi.g_map_handle2[1],"uint32",map.x+map.width/2,"uint32",map.y,"uint32",map.width/2,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",2000+Genivi.g_map_handle2[1],"uint32",0,"uint32",0,"uint32",map.width/2,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",2000+Genivi.g_map_handle[1],"boolean",true]); - Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",2000+Genivi.g_map_handle2[1],"boolean",true]); - } else { - Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",2000+Genivi.g_map_handle[1],"uint32",map.x,"uint32",map.y,"uint32",map.width,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",2000+Genivi.g_map_handle[1],"uint32",0,"uint32",0,"uint32",map.width,"uint32",map.height]); - Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",2000+Genivi.g_map_handle[1],"boolean",true]); - } - Genivi.lm_message(dbusIf,"CommitChanges",[]); - Genivi.lm_message(dbusIf,"ServiceDisconnect",["uint32",dbusIf.pid()]); - } + /**** + Genivi.lm_message(dbusIf,"ServiceConnect",["uint32",dbusIf.pid()]); + if (Genivi.g_map_handle2) { + Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"uint32",map.x,"uint32",map.y,"uint32",map.width/2,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"uint32",0,"uint32",0,"uint32",map.width/2,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle2[1],"uint32",map.x+map.width/2,"uint32",map.y,"uint32",map.width/2,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle2[1],"uint32",0,"uint32",0,"uint32",map.width/2,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"boolean",true]); + Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",Genivi.g_layer+Genivi.g_map_handle2[1],"boolean",true]); + } else { + Genivi.lm_message(dbusIf,"SetSurfaceDestinationRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"uint32",map.x,"uint32",map.y,"uint32",map.width,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceSourceRegion",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"uint32",0,"uint32",0,"uint32",map.width,"uint32",map.height]); + Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"boolean",true]); + } + Genivi.lm_message(dbusIf,"CommitChanges",[]); + Genivi.lm_message(dbusIf,"ServiceDisconnect",["uint32",dbusIf.pid()]); + ****/ + if (Genivi.g_map_handle2) { + lm_control.surface_set_destination_rectangle( + Genivi.g_layer+Genivi.g_map_handle[1], map.x, map.y, map.width/2, map.height); + lm_control.surface_set_source_rectangle( + Genivi.g_layer+Genivi.g_map_handle[1], map.x, map.y, map.width/2, map.height); + lm_control.surface_set_destination_rectangle( + Genivi.g_layer+Genivi.g_map_handle2[1], map.x, map.y, map.width/2, map.height); + lm_control.surface_set_source_rectangle( + Genivi.g_layer+Genivi.g_map_handle2[1], map.x, map.y, map.width/2, map.height); + lm_control.surface_set_visibility(Genivi.g_layer+Genivi.g_map_handle[1], 1); + lm_control.surface_set_visibility(Genivi.g_layer+Genivi.g_map_handle2[1], 1); + } else { + lm_control.surface_set_destination_rectangle( + Genivi.g_layer+Genivi.g_map_handle[1], 7, 140, 1906/*map.width*/, 760/*map.height*/); + lm_control.surface_set_source_rectangle( + Genivi.g_layer+Genivi.g_map_handle[1], 0, 0, map.width, map.height); + lm_control.surface_set_visibility(Genivi.g_layer+Genivi.g_map_handle[1], 1); + } + lm_control.commit_changes(); + } function hideSurfaces() { - Genivi.lm_message(dbusIf,"ServiceConnect",["uint32",dbusIf.pid()]); - if (Genivi.g_map_handle2) { - Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",2000+Genivi.g_map_handle2[1],"boolean",false]); - } - Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",2000+Genivi.g_map_handle[1],"boolean",false]); - Genivi.lm_message(dbusIf,"CommitChanges",[]); - Genivi.lm_message(dbusIf,"ServiceDisconnect",["uint32",dbusIf.pid()]); - } + /**** + Genivi.lm_message(dbusIf,"ServiceConnect",["uint32",dbusIf.pid()]); + if (Genivi.g_map_handle2) { + Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",Genivi.g_layer+Genivi.g_map_handle2[1],"boolean",false]); + } + Genivi.lm_message(dbusIf,"SetSurfaceVisibility",["uint32",Genivi.g_layer+Genivi.g_map_handle[1],"boolean",false]); + Genivi.lm_message(dbusIf,"CommitChanges",[]); + Genivi.lm_message(dbusIf,"ServiceDisconnect",["uint32",dbusIf.pid()]); + ****/ + if (Genivi.g_map_handle2) { + lm_control.surface_set_visibility(Genivi.g_layer+Genivi.g_map_handle2[1], 0); + } + lm_control.surface_set_visibility(Genivi.g_layer+Genivi.g_map_handle[1], 0); + lm_control.commit_changes(); + } function routeOverview() { diff --git a/src/hmi/qml/application.qml b/src/hmi/qml/application.qml index cf18f1d..5c78800 100644 --- a/src/hmi/qml/application.qml +++ b/src/hmi/qml/application.qml @@ -36,8 +36,11 @@ import "Core/genivi.js" as Genivi; ApplicationWindow { id: container + visible: true width: StyleSheetMap.menu[Constants.WIDTH]; height: StyleSheetMap.menu[Constants.HEIGHT]; + property Item layer_manager; + property Item layer_number; property Item component; function load(page) { @@ -49,6 +52,11 @@ ApplicationWindow { Component.onCompleted: { Genivi.setlang("eng_USA"); //by default set to english US + if (layer_manager) + { + Genivi.g_layer_manager = true; + Genivi.g_layer = layer_number; + } load("MainMenu"); } } diff --git a/src/hmi/qml/hmi-launcher/CMakeLists.txt b/src/hmi/qml/hmi-launcher/CMakeLists.txt index 603e60f..f52c268 100644 --- a/src/hmi/qml/hmi-launcher/CMakeLists.txt +++ b/src/hmi/qml/hmi-launcher/CMakeLists.txt @@ -13,6 +13,9 @@ # Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with # this file, You can obtain one at http://mozilla.org/MPL/2.0/. # +# List of changes: +# 13-10-2014, Tanibata, Nobuhiko, adaptation to layer management +# # @licence end@ ########################################################################### project(hmi-launcher) @@ -31,6 +34,20 @@ pkg_check_modules(QT5_DBUS REQUIRED Qt5DBus) pkg_check_modules(QT5_WIDGETS REQUIRED Qt5Widgets) pkg_check_modules(QT5_GUI REQUIRED Qt5Gui) pkg_check_modules(QT5_NETWORK REQUIRED Qt5Network) +pkg_check_modules(QT5_OPENGL REQUIRED glesv2) + + +if (${LM} EQUAL 1 ) + message("building with layer management") + set(ILM_LIBRARIES "-lilmCommon -lilmClient -lilmControl") + include_directories(${QT5_OPENGL_INCLUDE_DIRS}) + include_directories(${ILM_INCLUDE_DIRS}) + file(GLOB ILM_SOURCES lm_control.cpp lm_control.h) + add_definitions(-DLM) +else() + message("building without layer management") +endif() + include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${QT5_CORE_INCLUDE_DIRS}) @@ -65,6 +82,8 @@ link_directories( ${QT5_GUI_LIBRARY_DIRS} ${QT5_NETWORK_LIBRARY_DIRS} ${DBUS_LIBRARY_DIRS} + ${QT5_OPENGL_LIBRARY_DIRS} + ${ILM_LIBRARY_DIRS} ) set(LIBRARIES @@ -76,6 +95,8 @@ set(LIBRARIES ${QT5_GUI_LIBRARIES} ${QT5_NETWORK_LIBRARIES} ${DBUS_LIBRARIES} + ${QT5_OPENGL_LIBRARIES} + ${ILM_LIBRARIES} ) # generate constants used by the QML files @@ -135,6 +156,7 @@ add_executable(hmi-launcher dbusifsignal.h wheelarea.h preference.h + ${ILM_SOURCES} ) target_link_libraries(hmi-launcher ${LIBRARIES}) diff --git a/src/hmi/qml/hmi-launcher/hmi-launcher.pro b/src/hmi/qml/hmi-launcher/hmi-launcher.pro deleted file mode 100644 index 479a65b..0000000 --- a/src/hmi/qml/hmi-launcher/hmi-launcher.pro +++ /dev/null @@ -1,28 +0,0 @@ -lessThan(QT_MAJOR_VERSION, 5): error(This project requires Qt 5 or later) - -TARGET = hmi-launcher -OBJECTS_DIR = tmp -MOC_DIR = tmp -INCLUDEPATH += compat -CONFIG += qt plugin -QT += qml quick widgets dbus -#CONFIG+=qml_debug -TEMPLATE = app - -SOURCES += main.cpp \ - dbusif.cpp \ - wheelareaplugin.cpp \ - preference.cpp -unix { - CONFIG += link_pkgconfig - PKGCONFIG += dbus-1 -} - -INCLUDEPATH += $$PWD/../../../bin/hmi/qml -DEPENDPATH += $$PWD/../../../bin/hmi/qml - -HEADERS += \ - dbusif.h \ - dbusifsignal.h \ - wheelarea.h \ - preference.h diff --git a/src/hmi/qml/hmi-launcher/lm_control.cpp b/src/hmi/qml/hmi-launcher/lm_control.cpp new file mode 100644 index 0000000..840a0dc --- /dev/null +++ b/src/hmi/qml/hmi-launcher/lm_control.cpp @@ -0,0 +1,152 @@ +/** +* @licence app begin@ +* SPDX-License-Identifier: MPL-2.0 +* +* \copyright Copyright (C) 2014 DENSO CORPORATION +* +* \file lm_control.cpp +* +* \brief This file is part of the FSA HMI. +* +* \author Tanibata, Nobuhiko <NOBUHIKO_TANIBATA@denso.co.jp> +* +* \version 1.0 +* +* This Source Code Form is subject to the terms of the +* Mozilla Public License (MPL), v. 2.0. +* If a copy of the MPL was not distributed with this file, +* You can obtain one at http://mozilla.org/MPL/2.0/. +* +* For further information see http://www.genivi.org/. +* +* List of changes: +* +* <date>, <name>, <description of change> +* +* @licence end@ +*/ +#include <stdio.h> +#include <sys/types.h> +#include <unistd.h> +#include "lm_control.h" +#include "ilm_client.h" +#include "ilm_control.h" +#include "ilm_common.h" + +t_ilm_layer application; +t_ilm_layer navit; + +lm_control::lm_control(QObject *parent) +{ + (void)parent; + ilm_init(); + return; +} + +lm_control::~lm_control() +{ + ilm_destroy(); +} + +void +lm_control::surface_set_visibility(int surfaceid, int visibility) +{ + t_ilm_surface surface_id = 0; + t_ilm_bool ilm_visibility = 0; + + LOG_INFO("lm_control::surface_set_visibility" + "(surfaceid=%d, visibility=%d)\n" + ,surfaceid ,visibility); + + surface_id = (t_ilm_surface)surfaceid; + ilm_visibility = (t_ilm_bool)visibility; + + ilmErrorTypes ret = ilm_surfaceSetVisibility(surface_id, ilm_visibility); + + if (ILM_SUCCESS != ret) + { + LOG_WARNING("failed to layer_set_visibility.\n"); + } +} + +void +lm_control::surface_set_source_rectangle( + int surfaceid, int x, int y, int width, int height) +{ + t_ilm_surface surface_id = 0; + t_ilm_int ilm_x = 0; + t_ilm_int ilm_y = 0; + t_ilm_int ilm_width = 0; + t_ilm_int ilm_height = 0; + + LOG_INFO("lm_control::surface_set_source_rectangle" + "(surfaceid=%d, x=%d, y=%d, width=%d, height=%d)\n" + ,surfaceid ,x ,y ,width ,height); + + surface_id = (t_ilm_surface)surfaceid; + ilm_x = (t_ilm_int)x; + ilm_y = (t_ilm_int)y; + ilm_width = (t_ilm_int)width; + ilm_height = (t_ilm_int)height; + + ilmErrorTypes ret = ilm_surfaceSetSourceRectangle( + surface_id, ilm_x, ilm_y, ilm_width, ilm_height); + + if (ILM_SUCCESS != ret) + { + LOG_WARNING("failed to surface_set_source_rectangle.\n"); + } +} + +void +lm_control::surface_set_destination_rectangle( + int surfaceid, int x, int y, int width, int height) +{ + t_ilm_surface surface_id = 0; + t_ilm_int ilm_x = 0; + t_ilm_int ilm_y = 0; + t_ilm_int ilm_width = 0; + t_ilm_int ilm_height = 0; + + LOG_INFO("lm_control::surface_set_destination_rectangle" + "(surfaceid=%d, x=%d, y=%d, width=%d, height=%d)\n" + ,surfaceid ,x ,y ,width ,height); + + surface_id = (t_ilm_surface)surfaceid; + ilm_x = (t_ilm_int)x; + ilm_y = (t_ilm_int)y; + ilm_width = (t_ilm_int)width; + ilm_height = (t_ilm_int)height; + + ilmErrorTypes ret = ilm_surfaceSetDestinationRectangle( + surface_id, ilm_x, ilm_y, ilm_width, ilm_height); + + if (ILM_SUCCESS != ret) + { + LOG_WARNING("failed to surface_set_destination_rectangle.\n"); + } +} + +void +lm_control::surface_remove(int surfaceid) +{ + LOG_INFO("lm_control::surface_remove(surfaceid=%d)\n", surfaceid); + + ilmErrorTypes ret = ilm_surfaceRemove(surfaceid); + if (ILM_SUCCESS != ret) + { + LOG_WARNING("failed to surface_remove.\n"); + } +} + +void +lm_control::commit_changes() +{ + LOG_INFO("lm_control::commit_changes()\n"); + + ilmErrorTypes ret = ilm_commitChanges(); + if (ILM_SUCCESS != ret) + { + LOG_WARNING("failed to comit_changes.\n"); + } +} diff --git a/src/hmi/qml/hmi-launcher/lm_control.h b/src/hmi/qml/hmi-launcher/lm_control.h new file mode 100644 index 0000000..50a2e5f --- /dev/null +++ b/src/hmi/qml/hmi-launcher/lm_control.h @@ -0,0 +1,74 @@ +/** +* @licence app begin@ +* SPDX-License-Identifier: MPL-2.0 +* +* \copyright Copyright (C) 2014 DENSO CORPORATION +* +* \file lm_control.h +* +* \brief This file is part of the FSA HMI. +* +* \author Tanibata, Nobuhiko <NOBUHIKO_TANIBATA@denso.co.jp> +* +* \version 1.0 +* +* This Source Code Form is subject to the terms of the +* Mozilla Public License (MPL), v. 2.0. +* If a copy of the MPL was not distributed with this file, +* You can obtain one at http://mozilla.org/MPL/2.0/. +* +* For further information see http://www.genivi.org/. +* +* List of changes: +* +* <date>, <name>, <description of change> +* +* @licence end@ +*/ +#ifndef LM_CONTROL_H +#define LM_CONTROL_H + +#include <stdio.h> +#include <QObject> + +#define DEBUG_LEVEL 2 + +#define LOG_INFO(...) { \ + if (0 < DEBUG_LEVEL) { \ + printf("[INFO] " __VA_ARGS__); \ + fflush(stdout); \ + } \ +} + +#define LOG_WARNING(...) { \ + if (1 < DEBUG_LEVEL) { \ + printf("[WARNING] " __VA_ARGS__); \ + fflush(stdout); \ + } \ +} + +#define LOG_ERROR(...) { \ + if (1 < DEBUG_LEVEL) { \ + printf("[ERROR] " __VA_ARGS__); \ + fflush(stdout); \ + } \ +} + +class lm_control : QObject +{ + Q_OBJECT + + public: + lm_control(QObject *parent = 0); + ~lm_control(); + + Q_INVOKABLE void surface_set_visibility(int surfaceid, int visibility); + Q_INVOKABLE void surface_set_source_rectangle( + int surfaceid, int x, int y, int width, int height); + Q_INVOKABLE void surface_set_destination_rectangle( + int surfaceid, int x, int y, int width, int height); + Q_INVOKABLE void surface_remove(int surfaceid); + Q_INVOKABLE void commit_changes(); +}; + +#endif // LM_CONTROL_H diff --git a/src/hmi/qml/hmi-launcher/main.cpp b/src/hmi/qml/hmi-launcher/main.cpp index 5045995..77dccfc 100644 --- a/src/hmi/qml/hmi-launcher/main.cpp +++ b/src/hmi/qml/hmi-launcher/main.cpp @@ -9,6 +9,7 @@ * \brief This file is part of the FSA HMI. * * \author Philippe Colliot <philippe.colliot@mpsa.com> +* \author Tanibata, Nobuhiko <NOBUHIKO_TANIBATA@denso.co.jp> * * \version 1.0 * @@ -21,7 +22,7 @@ * * List of changes: * -* <date>, <name>, <description of change> +* 13-10-2014, Tanibata, Nobuhiko, adaptation to layer management * * @licence end@ */ @@ -33,10 +34,15 @@ #include <QQmlEngine> #include <QQuickWindow> #include <QSurfaceFormat> +#include <QQmlContext> #include "dbusif.h" #include "wheelarea.h" #include "preference.h" +#if LM + #include "lm_control.h" +#endif + int main(int argc, char ** argv) { QApplication app(argc, argv); @@ -48,6 +54,10 @@ int main(int argc, char ** argv) int rc = 0; +#if LM + lm_control lmc; +#endif + QQmlEngine engine; QQmlComponent *component = new QQmlComponent(&engine); @@ -64,8 +74,21 @@ int main(int argc, char ** argv) return -1; } + QQmlContext *context = engine.rootContext(); + +#if LM + context->setContextProperty("lm_control", (QObject*)&lmc); +#endif + QObject *topLevel = component->create(); +#if LM + topLevel->setProperty("layer_manager", 1); + topLevel->setProperty("layer_number", argv[2]); +#else + topLevel->setProperty("layer_manager", 0); +#endif + QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel); window->setFlags(Qt::CustomizeWindowHint); diff --git a/src/ilm b/src/ilm new file mode 160000 +Subproject d3927a6ae5e6c9230d55b6ba4195d434586521c diff --git a/src/patches/amb_allow_sessionbus.patch b/src/patches/amb_allow_sessionbus.patch index d9b77c8..d8312c3 100644 --- a/src/patches/amb_allow_sessionbus.patch +++ b/src/patches/amb_allow_sessionbus.patch @@ -121,4 +121,3 @@ index 0835a64..7fb48ea 100755 + managerObject = bus.get_object("org.automotive.message.broker", "/"); managerInterface = dbus.Interface(managerObject, "org.automotive.Manager") - diff --git a/src/patches/layer_management_cast_fix.patch b/src/patches/layer_management_cast_fix.patch deleted file mode 100644 index df3dee7..0000000 --- a/src/patches/layer_management_cast_fix.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp b/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp -index 2d9b0a9..09ffd43 100644 ---- a/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp -+++ b/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp -@@ -46,7 +46,7 @@ bool X11GLESRenderer::start(int width, int height, const char* displayname) - m_pWindowSystem = new X11WindowSystem(displayname, width, height, m_pScene); - m_pGraphicSystem = new GLESGraphicsystem(width,height, ShaderProgramGLES::createProgram); - -- if (!m_pWindowSystem->init(m_pGraphicSystem)) -+ if (!m_pWindowSystem->init((BaseGraphicSystem<_XDisplay*, long unsigned int>*)m_pGraphicSystem)) - { - goto fail; // TODO bad style - } diff --git a/src/script/build.sh b/src/script/build.sh index 03681fe..243e583 100755 --- a/src/script/build.sh +++ b/src/script/build.sh @@ -25,6 +25,9 @@ source fsa-config.sh GENIVI_NAVIGATION_ROUTING_API=$NAVIGATION_SERVICE_API_DIR/navigation-core/genivi-navigationcore-routing.xml GENIVI_NAVIGATION_CONSTANTS_API=$NAVIGATION_SERVICE_API_DIR/navigation-core/genivi-navigationcore-constants.xml +# by default no ilm +lm=0 + #-------------------------------------------------------------------------- # Compiler Flags #-------------------------------------------------------------------------- @@ -32,33 +35,50 @@ GENIVI_NAVIGATION_CONSTANTS_API=$NAVIGATION_SERVICE_API_DIR/navigation-core/geni #-------------------------------------------------------------------------- usage() { - echo "Usage: ./build.sh Build fuel stop advisor" - echo " or: ./build.sh [command]" + echo "Usage: ./build.sh [command]" echo echo "command:" echo " make Build" - echo " clean Clean" - echo " src-clean Clean the cloned sources" + echo " makelm Build with layer manager" + echo " clean Clean the bin" + echo " src-clean Clean the cloned sources and the bin" + echo " clone Clone the sources" echo " help Print Help" echo echo } -build() { +clone() { echo '' - echo 'Building fuel stop advisor' + echo 'Clone/update version of additional sources if needed' cd $TOP_DIR/.. mkdir -p bin cd $TOP_BIN_DIR cmake $TOP_DIR - + cd $TOP_BIN_DIR mkdir -p $NAVIGATION_SERVICE cd $NAVIGATION_SERVICE_BUILD_SCRIPT_DIR - # call the bash script of navigation, set the bin dir to navigation-service and tell it where to clone the positioning - bash ./build.sh make $NAVIGATION_SERVICE_BIN_DIR $POSITIONING_SRC_DIR + # call the bash script of navigation, set the bin dir to navigation-service and tell it where to clone the positioning and the ilm + bash ./build.sh clone $NAVIGATION_SERVICE_BIN_DIR $POSITIONING_SRC_DIR $IVI_LAYER_MANAGER_SRC_DIR +} + +build() { + echo '' + echo 'Building fuel stop advisor' + clone + + cd $TOP_BIN_DIR + mkdir -p $NAVIGATION_SERVICE + cd $NAVIGATION_SERVICE_BUILD_SCRIPT_DIR + # call the bash script of navigation, set the bin dir to navigation-service and tell it where to clone the positioning and the ilm + if [ $lm -eq 0 ]; then + bash ./build.sh make $NAVIGATION_SERVICE_BIN_DIR $POSITIONING_SRC_DIR $IVI_LAYER_MANAGER_SRC_DIR + else + bash ./build.sh makelm $NAVIGATION_SERVICE_BIN_DIR $POSITIONING_SRC_DIR $IVI_LAYER_MANAGER_SRC_DIR + fi cd $TOP_BIN_DIR mkdir -p $FUEL_STOP_ADVISOR cd $FUEL_STOP_ADVISOR_BIN_DIR @@ -82,7 +102,7 @@ build() { cd $TOP_BIN_DIR mkdir -p $HMI_LAUNCHER cd $HMI_LAUNCHER_BIN_DIR - cmake -Dnavigation-service_API=$NAVIGATION_SERVICE_API_DIR -Dpositioning_API=$ENHANCED_POSITION_SERVICE_API_DIR $HMI_LAUNCHER_SRC_DIR && make + cmake -DLM=$lm -Dnavigation-service_API=$NAVIGATION_SERVICE_API_DIR -Dpositioning_API=$ENHANCED_POSITION_SERVICE_API_DIR $HMI_LAUNCHER_SRC_DIR && make cd $TOP_BIN_DIR mkdir -p $POI_SERVER @@ -111,15 +131,18 @@ if [ $# -ge 1 ]; then usage elif [ $1 = make ]; then build + elif [ $1 = makelm ]; then + lm=1 + build elif [ $1 = clean ]; then clean elif [ $1 = src-clean ]; then src-clean + elif [ $1 = clone ]; then + clone else usage fi -elif [ $# -eq 0 ]; then - build else usage fi diff --git a/src/script/fsa-config.sh b/src/script/fsa-config.sh index 0b515dd..f4f6747 100644 --- a/src/script/fsa-config.sh +++ b/src/script/fsa-config.sh @@ -26,6 +26,7 @@ NAVIGATION_SERVICE_API_DIR=$NAVIGATION_SERVICE_SRC_DIR/api NAVIGATION_SERVICE_BUILD_SCRIPT_DIR=$NAVIGATION_SERVICE_SRC_DIR/src/navigation/script NAVIT=navit +#the binaries of navit are located into the navigation-service binaries NAVIT_BIN_DIR=$NAVIGATION_SERVICE_BIN_DIR/navit/navit POI_SERVER=poi-server @@ -62,6 +63,11 @@ AUTOMOTIVE_MESSAGE_BROKER=automotive-message-broker AUTOMOTIVE_MESSAGE_BROKER_SRC_DIR=$TOP_DIR/$AUTOMOTIVE_MESSAGE_BROKER AUTOMOTIVE_MESSAGE_BROKER_BIN_DIR=$TOP_BIN_DIR/$AUTOMOTIVE_MESSAGE_BROKER +IVI_LAYER_MANAGER=ilm +IVI_LAYER_MANAGER_SRC_DIR=$TOP_DIR/$IVI_LAYER_MANAGER +#the binaries of ilm are located into the navigation-service binaries +IVI_LAYER_MANAGER_BIN_DIR=$NAVIGATION_SERVICE_BIN_DIR/$IVI_LAYER_MANAGER + LOG_REPLAYER=log-replayer LOG_REPLAYER_SRC_DIR=$TOP_DIR/$LOG_REPLAYER LOG_REPLAYER_BIN_DIR=$TOP_BIN_DIR/$LOG_REPLAYER |