diff options
Diffstat (limited to 'NodeStateAccess/interfaces')
| -rw-r--r-- | NodeStateAccess/interfaces/CMakeLists.txt | 335 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/NodeStateMachineTest.fdepl | 34 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/NodeStateMachineTest.fidl | 51 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/NodeStateManager.fdepl | 160 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/NodeStateManager.fidl | 482 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/NodeStateManagerTypes.fdepl | 55 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/NodeStateManagerTypes.fidl | 268 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/cmake/core_stub_config.cmake.in | 27 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/cmake/someip_proxy_config.cmake.in | 27 | ||||
| -rw-r--r-- | NodeStateAccess/interfaces/cmake/someip_stub_config.cmake.in | 27 |
10 files changed, 1466 insertions, 0 deletions
diff --git a/NodeStateAccess/interfaces/CMakeLists.txt b/NodeStateAccess/interfaces/CMakeLists.txt new file mode 100644 index 0000000..53e677c --- /dev/null +++ b/NodeStateAccess/interfaces/CMakeLists.txt @@ -0,0 +1,335 @@ +####################################################################################################################### +# +# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH +# +# Author: Sven_Hassler@mentor.com +# +# CMake file of NSM Interfaces +# +# This Source Code Form is subject to the terms of the 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/. +# +####################################################################################################################### + +cmake_minimum_required(VERSION 3.7.2 FATAL_ERROR) + +project(NodeStateAccessInterfaces LANGUAGES CXX) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED YES) +set(CMAKE_CXX_EXTENSIONS NO) + + +########################################### +# Options & settings +########################################### + +option(USE_INSTALLED_COMMONAPI "Set to OFF to use the local (build tree) version of CommonAPI" ON) + +set(SRC_GEN_DEST "src-gen" CACHE STRING "Path to the destination directory of the generated sources") +if(NOT IS_ABSOLUTE ${SRC_GEN_DEST}) + set(SRC_GEN_DEST "${CMAKE_CURRENT_BINARY_DIR}/${SRC_GEN_DEST}") +endif() + +# Core generator: +set(COMMONAPI_CORE_TOOL_GENERATOR "" CACHE STRING "CommonAPI-Core-Tools generator") +if("${COMMONAPI_CORE_TOOL_GENERATOR}" STREQUAL "") + message(FATAL_ERROR "The file path for the SomeIP generator needs to be specified! Use '-DCOMMONAPI_CORE_TOOL_GENERATOR=<path>'") + return() +else() + message("COMMONAPI_CORE_TOOL_GENERATOR specified: ${COMMONAPI_CORE_TOOL_GENERATOR}") +endif() + +# SomeIP generator: +set(COMMONAPI_SOMEIP_TOOL_GENERATOR "" CACHE STRING "CommonAPI-SomeIP-Tools generator") +if("${COMMONAPI_SOMEIP_TOOL_GENERATOR}" STREQUAL "") + message(FATAL_ERROR "The file path for the SomeIP generator needs to be specified! Use '-DCOMMONAPI_SOMEIP_TOOL_GENERATOR=<path>'") + return() +else() + message("COMMONAPI_SOMEIP_TOOL_GENERATOR specified: ${COMMONAPI_SOMEIP_TOOL_GENERATOR}") +endif() + + +########################################### +# Find required packages +########################################### + +if("${USE_INSTALLED_COMMONAPI}" STREQUAL "ON") + find_package(CommonAPI REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY) + find_package(CommonAPI-SomeIP REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY) + find_package(vsomeip REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY) +else() + find_package(CommonAPI REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH) + find_package(CommonAPI-SomeIP REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH) + find_package(vsomeip REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH) +endif() + +find_package(Java 1.8 EXACT REQUIRED COMPONENTS Development) + + +########################################### +# Generate code +########################################### + +set(INTERFACE_NAME "org.genivi.nodestatemanager") + +execute_process( + COMMAND + ${COMMONAPI_CORE_TOOL_GENERATOR} + --dest-common ${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core/ + --dest-proxy ${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/core/ + --dest-stub ${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/ + --dest-skel ${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/ + --skel + ${CMAKE_CURRENT_SOURCE_DIR}/NodeStateManager.fdepl + + COMMAND + ${COMMONAPI_SOMEIP_TOOL_GENERATOR} + --dest-common ${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/ + --dest-proxy ${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/someip/ + --dest-stub ${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/someip/ + ${CMAKE_CURRENT_SOURCE_DIR}/NodeStateManager.fdepl + + RESULTS_VARIABLE + ERRORS +) + +list(GET ERRORS 0 CORE_ERROR) +if(NOT ${CORE_ERROR} EQUAL 0) +message(FATAL_ERROR "Error calling core generators: ${CORE_ERROR}") +endif() + +list(GET ERRORS 1 SOMEIP_ERROR) +if(NOT ${SOMEIP_ERROR} EQUAL 0) + message(FATAL_ERROR "Error calling someip generators: ${SOMEIP_ERROR}") +endif() + + +########################################### +# Build libraries +########################################### + +# Core stub: +set(CORE_STUB_NAME "org.genivi.nodestatemanager.commonapi.core.stub") +file(GLOB_RECURSE CORE_STUB_SRCS + "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/**/*.cpp" +) +set(CORE_STUB_INCLUDES + "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core/" +) +set(CORE_STUB_INSTALL_INCLUDES + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/stub/core/" + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/core/" +) +set(CORE_STUB_LINK_LIBRARIES + "CommonAPI" +) + +add_library(${CORE_STUB_NAME} SHARED ${CORE_STUB_SRCS}) +target_link_libraries(${CORE_STUB_NAME} PUBLIC ${CORE_STUB_LINK_LIBRARIES}) +target_include_directories( + ${CORE_STUB_NAME} PUBLIC + "$<BUILD_INTERFACE:${CORE_STUB_INCLUDES}>" + "$<INSTALL_INTERFACE:${CORE_STUB_INSTALL_INCLUDES}>" + ${COMMONAPI_INCLUDE_DIRS} +) + +# SomeIP stub: +set(SOMEIP_STUB_NAME "org.genivi.nodestatemanager.commonapi.someip.stub") +file(GLOB_RECURSE SOMEIP_STUB_SRCS + "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/someip/**/*.cpp" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp" +) +set(SOMEIP_STUB_INCLUDES + "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/someip" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core" +) +set(SOMEIP_STUB_INSTALL_INCLUDES + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/stub/someip" + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/stub/core" + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/someip" + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/core" +) +set(SOMEIP_STUB_LINK_LIBRARIES + "CommonAPI" + "CommonAPI-SomeIP" +) + +add_library(${SOMEIP_STUB_NAME} SHARED ${SOMEIP_STUB_SRCS}) +target_link_libraries(${SOMEIP_STUB_NAME} PUBLIC ${SOMEIP_STUB_LINK_LIBRARIES}) +target_include_directories( + ${SOMEIP_STUB_NAME} PUBLIC + ${COMMONAPI_INCLUDE_DIRS} + ${COMMONAPI_SOMEIP_INCLUDE_DIRS} + "$<BUILD_INTERFACE:${SOMEIP_STUB_INCLUDES}>" + "$<INSTALL_INTERFACE:${SOMEIP_STUB_INSTALL_INCLUDES}>" +) + +# SomeIP proxy: +set(SOMEIP_PROXY_NAME "org.genivi.nodestatemanager.commonapi.someip.proxy") +file(GLOB_RECURSE SOMEIP_PROXY_SRCS + "${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/someip/**/*.cpp" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp" +) +set(SOMEIP_PROXY_INCLUDES + "${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/someip" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/core" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip" + "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core" +) +set(SOMEIP_PROXY_INSTALL_INCLUDES + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/proxy/someip" + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/proxy/core" + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/someip" + "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/core" +) +set(SOMEIP_PROXY_LINK_LIBRARIES + "CommonAPI" + "CommonAPI-SomeIP" +) + +add_library(${SOMEIP_PROXY_NAME} SHARED ${SOMEIP_PROXY_SRCS}) +target_link_libraries(${SOMEIP_PROXY_NAME} PUBLIC ${SOMEIP_PROXY_LINK_LIBRARIES}) +target_include_directories( + ${SOMEIP_PROXY_NAME} PUBLIC + ${COMMONAPI_INCLUDE_DIRS} + ${COMMONAPI_SOMEIP_INCLUDE_DIRS} + "$<BUILD_INTERFACE:${SOMEIP_PROXY_INCLUDES}>" + "$<INSTALL_INTERFACE:${SOMEIP_PROXY_INSTALL_INCLUDES}>" +) + + +########################################### +# Install + +# Install libraries: +install( + TARGETS ${CORE_STUB_NAME} + EXPORT ${CORE_STUB_NAME}Targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +) +install( + TARGETS ${SOMEIP_STUB_NAME} + EXPORT ${SOMEIP_STUB_NAME}Targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +) +install( + TARGETS ${SOMEIP_PROXY_NAME} + EXPORT ${SOMEIP_PROXY_NAME}Targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +# Install includes: +install( + DIRECTORY ${CORE_STUB_INCLUDES} + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${CORE_STUB_NAME}" + FILES_MATCHING PATTERN "*.hpp" +) + +install( + DIRECTORY ${SOMEIP_STUB_INCLUDES} + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${SOMEIP_STUB_NAME}" + FILES_MATCHING PATTERN "*.hpp" +) + +install( + DIRECTORY ${SOMEIP_PROXY_INCLUDES} + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${SOMEIP_PROXY_NAME}" + FILES_MATCHING PATTERN "*.hpp" +) + +# Create and install package configuration files: +configure_package_config_file( + cmake/core_stub_config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${CORE_STUB_NAME}Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME} +) +# install( +# FILES ${CMAKE_CURRENT_BINARY_DIR}/${CORE_STUB_NAME}Config.cmake +# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME} +# ) + +configure_package_config_file( + cmake/someip_stub_config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_STUB_NAME}Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME} +) +# install( +# FILES ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_STUB_NAME}Config.cmake +# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME} +# ) + +configure_package_config_file( + cmake/someip_proxy_config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_PROXY_NAME}Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME} +) +# install( +# FILES ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_PROXY_NAME}Config.cmake +# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME} +# ) + +# Create and install target files: +export(EXPORT ${CORE_STUB_NAME}Targets) +install( + EXPORT ${CORE_STUB_NAME}Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME} +) + +export(EXPORT ${SOMEIP_STUB_NAME}Targets) +install( + EXPORT ${SOMEIP_STUB_NAME}Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME} +) + +export(EXPORT ${SOMEIP_PROXY_NAME}Targets) +install( + EXPORT ${SOMEIP_PROXY_NAME}Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME} +) + +# Create and install version files: +write_basic_package_version_file( + ${CORE_STUB_NAME}ConfigVersion.cmake + VERSION 1.0 + COMPATIBILITY SameMajorVersion +) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${CORE_STUB_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME} +) + +write_basic_package_version_file( + ${SOMEIP_STUB_NAME}ConfigVersion.cmake + VERSION 1.0 + COMPATIBILITY SameMajorVersion +) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_STUB_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME} +) + +write_basic_package_version_file( + ${SOMEIP_PROXY_NAME}ConfigVersion.cmake + VERSION 1.0 + COMPATIBILITY SameMajorVersion +) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_PROXY_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME} +) + +# Export the packages for use from the build-tree: +# (this registers the build-tree with the global CMake-registry) +export(PACKAGE ${CORE_STUB_NAME}) +export(PACKAGE ${SOMEIP_STUB_NAME}) +export(PACKAGE ${SOMEIP_PROXY_NAME}) diff --git a/NodeStateAccess/interfaces/NodeStateMachineTest.fdepl b/NodeStateAccess/interfaces/NodeStateMachineTest.fdepl new file mode 100644 index 0000000..e53799d --- /dev/null +++ b/NodeStateAccess/interfaces/NodeStateMachineTest.fdepl @@ -0,0 +1,34 @@ +/********************************************************************************************************************** + * + * Copyright (C) 2017 BMW AG + * + * Interface definition for NodeStateManager CommonAPI interface + * + * This Source Code Form is subject to the terms of the 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/. + * + **********************************************************************************************************************/ + +import "platform:/plugin/org.genivi.commonapi.someip/deployment/CommonAPI-SOMEIP_deployment_spec.fdepl" +import "NodeStateMachineTest.fidl" +import "NodeStateManagerTypes.fidl" +import "NodeStateManagerTypes.fdepl" + +define org.genivi.commonapi.someip.deployment for interface +org.genivi.nodestatemachinetest.Test { + SomeIpServiceID = 63744 + + method GetNsmData { + SomeIpMethodID = 1 + } + + method GetNsmInterfaceVersion { + SomeIpMethodID = 2 + } + + method SetNsmData { + SomeIpMethodID = 3 + } + +} diff --git a/NodeStateAccess/interfaces/NodeStateMachineTest.fidl b/NodeStateAccess/interfaces/NodeStateMachineTest.fidl new file mode 100644 index 0000000..63f1832 --- /dev/null +++ b/NodeStateAccess/interfaces/NodeStateMachineTest.fidl @@ -0,0 +1,51 @@ +/********************************************************************************************************************** + * + * Copyright (C) 2017 BMW AG + * + * Interface definition for NodeStateManager CommonAPI interface + * + * This Source Code Form is subject to the terms of the 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/. + * + **********************************************************************************************************************/ + +package org.genivi.nodestatemachinetest +import org.genivi.* from "NodeStateManagerTypes.fidl" + +<** + @author : Monika Forstner +**> + +interface Test { + version { + major 1 + minor 0 + } + method GetNsmData { + in { + NodeStateManagerTypes.NsmDataType_e DataType + NodeStateManagerTypes.NsmDataTypeArray DataIn + UInt32 DataLen + } + out { + NodeStateManagerTypes.NsmDataTypeArray DataOut + Int32 ErrorCode + } + } + method GetNsmInterfaceVersion { + out { + UInt8 Version + } + } + method SetNsmData { + in { + NodeStateManagerTypes.NsmDataType_e DataType + NodeStateManagerTypes.NsmDataTypeArray Data + UInt32 DataLen + } + out { + Int32 ErrorCode + } + } +} diff --git a/NodeStateAccess/interfaces/NodeStateManager.fdepl b/NodeStateAccess/interfaces/NodeStateManager.fdepl new file mode 100644 index 0000000..1916025 --- /dev/null +++ b/NodeStateAccess/interfaces/NodeStateManager.fdepl @@ -0,0 +1,160 @@ +/********************************************************************************************************************** + * + * Copyright (C) 2017 BMW AG + * + * Interface definition for NodeStateManager CommonAPI interface + * + * This Source Code Form is subject to the terms of the 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/. + * + **********************************************************************************************************************/ + +import "platform:/plugin/org.genivi.commonapi.someip/deployment/CommonAPI-SOMEIP_deployment_spec.fdepl" +import "NodeStateManager.fidl" +import "NodeStateManagerTypes.fidl" +import "NodeStateManagerTypes.fdepl" + +define org.genivi.commonapi.someip.deployment for interface +org.genivi.nodestatemanager.Consumer { + SomeIpServiceID = 63745 + + attribute BootMode { + SomeIpGetterID = 1 + SomeIpSetterID = 2 + SomeIpNotifierID = 32769 + SomeIpEventGroups = { + 1 + } + } + + attribute RestartReason { + SomeIpGetterID = 3 + SomeIpSetterID = 4 + SomeIpNotifierID = 32770 + SomeIpEventGroups = { + 2 + } + } + + attribute ShutdownReason { + SomeIpGetterID = 5 + SomeIpSetterID = 6 + SomeIpNotifierID = 32771 + SomeIpEventGroups = { + 3 + } + } + + attribute WakeUpReason { + SomeIpGetterID = 7 + SomeIpSetterID = 8 + SomeIpNotifierID = 32772 + SomeIpEventGroups = { + 4 + } + } + + method GetNodeState { + SomeIpMethodID = 9 + } + + method SetSessionState { + SomeIpMethodID = 10 + } + + method GetSessionState { + SomeIpMethodID = 11 + } + + method GetApplicationMode { + SomeIpMethodID = 12 + } + + method RegisterShutdownClient { + SomeIpMethodID = 13 + } + + method UnRegisterShutdownClient { + SomeIpMethodID = 14 + } + + method RegisterSession { + SomeIpMethodID = 15 + } + + method UnRegisterSession { + SomeIpMethodID = 16 + } + + method GetAppHealthCount { + SomeIpMethodID = 17 + } + + method GetInterfaceVersion { + SomeIpMethodID = 18 + } + + method LifecycleRequestComplete { + SomeIpMethodID = 19 + } + + broadcast ShutdownEvents { + SomeIpEventID = 32773 + SomeIpEventGroups = { + 5 + } + } + + broadcast NodeApplicationMode { + SomeIpEventID = 32774 + SomeIpEventGroups = { + 6 + } + } + + broadcast NodeState { + SomeIpEventID = 32775 + SomeIpEventGroups = { + 7 + } + } + + broadcast SessionStateChanged { + SomeIpEventID = 32776 + SomeIpEventGroups = { + 8 + } + } + +} + +define org.genivi.commonapi.someip.deployment for interface +org.genivi.nodestatemanager.LifecycleControl { + SomeIpServiceID = 63746 + + method RequestNodeRestart { + SomeIpMethodID = 1 + } + + method SetApplicationMode { + SomeIpMethodID = 2 + } + + method SetNodeState { + SomeIpMethodID = 3 + } + + method SetBootMode { + SomeIpMethodID = 4 + } + + method SetAppHealthStatus { + SomeIpMethodID = 5 + } + + method CheckLucRequired { + SomeIpMethodID = 6 + } + +} diff --git a/NodeStateAccess/interfaces/NodeStateManager.fidl b/NodeStateAccess/interfaces/NodeStateManager.fidl new file mode 100644 index 0000000..0865989 --- /dev/null +++ b/NodeStateAccess/interfaces/NodeStateManager.fidl @@ -0,0 +1,482 @@ +/********************************************************************************************************************** + * + * Copyright (C) 2017 BMW AG + * + * Interface definition for NodeStateManager CommonAPI interface + * + * This Source Code Form is subject to the terms of the 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/. + * + **********************************************************************************************************************/ + +package org.genivi.nodestatemanager +import org.genivi.* from "NodeStateManagerTypes.fidl" + +<** + @author : Alexander Wenzel +**> + +interface Consumer { + version { + major 1 + minor 0 + } + broadcast ShutdownEvents selective { + out { + UInt32 Mode + } + } + + <** + @description : and will include the current Node Application Mode as a parameter + **> + broadcast NodeApplicationMode { + out { + + <** + @description : This parameter will be based upon the NsmApplicationMode_e + **> + NodeStateManagerTypes.NsmApplicationMode_e ApplicationModeId + } + } + + <** + @description : include the current Node State as a parameter + **> + broadcast NodeState { + out { + + <** + @description : This parameter will be based upon the NsmNodeState_e + **> + NodeStateManagerTypes.NsmNodeState_e NodeStateId + } + } + + <** + @description : + through the use of the Session Name. + + The signal will include the session name and the new session state + **> + broadcast SessionStateChanged { + out { + + <** + @description : The Session name will be based upon either the pre-defined platform session names or using a newly added product defined session name + **> + String SessionName + + <** + @description : This parameter will be based upon the enum NsmSeat_e + **> + NodeStateManagerTypes.NsmSeat_e SeatID + + <** + @description : This parameter will be based upon the NsmSessionState_e but it will not be bounded by the values in that enumeration. The listed values are the default values that are mandatory for platform sessions, but product sessions may have additional session states + **> + NodeStateManagerTypes.NsmSessionState_e SessionState + } + } + + <** + @description : The method is used by other applications to get the NodeState without the need of registration to the signal + **> + method GetNodeState { + out { + + <** + @description : Will be based on the NsmNodeState_e + **> + NodeStateManagerTypes.NsmNodeState_e NodeStateId + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : The method is used by applications to set the state of a session + **> + method SetSessionState { + in { + + <** + @description : This is a null terminated string that identifies the name of the session that should be updated + **> + String SessionName + + <** + @description : This parameter defines the name of the application that is setting the state of the session. This must be the applications systemd unit filename. + **> + String SessionOwner + + <** + @description : This parameter will be based upon the enum NsmSeat_e + **> + NodeStateManagerTypes.NsmSeat_e SeatID + + <** + @description : Will be based on the NsmSessionState_e but it will not be bounded by the values in that enum as extended session states are possible for new product sessions + **> + NodeStateManagerTypes.NsmSessionState_e SessionState + } + out { + + <** + @description : NsmErrorStatus_e value + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : The method is used by applications to get the state of a session + **> + method GetSessionState { + in { + String SessionName + + <** + @description : This parameter will be based upon the enum NsmSeat_e + **> + NodeStateManagerTypes.NsmSeat_e SeatID + } + out { + + <** + @description : Will be based on the NsmSessionState_e but it will not be bounded by the values in that enum as extended session states are possible for new product sessions + **> + NodeStateManagerTypes.NsmSessionState_e SessionState + + <** + @description : NsmErrorStatus_e value + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : The method is used by other applications to get the application mode. + **> + method GetApplicationMode { + out { + + <** + @description : Will be based on NsmApplicationMode_e + **> + NodeStateManagerTypes.NsmApplicationMode_e ApplicationModeId + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : object called NSMLifecycleRequest. This method will take one parameter which is the Lifecycle Request (i.e. normal shutdown, fast shutdown, runup). For an example of the required client interface please see the Boot Manager component who will be a client of the NSM + **> + method RegisterShutdownClient { + in { + + <** + @description : Shutdown mode for which client wants to be informed (i.e normal, fast etc) + **> + UInt32 ShutdownMode + + <** + @description : Max. Timeout to wait for response from shutdown client. + **> + UInt32 TimeoutMs + } + out { + + <** + @description : + Returned error code of the method. + NsmErrorStatus_e value + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : The method is used by other applications to unregister themselves as shutdown client + **> + method UnRegisterShutdownClient { + in { + + <** + @description : Shutdown mode from which client wants to be unregistered + **> + UInt32 ShutdownMode + } + out { + + <** + @description : + Returned error code of the method. + NsmErrorStatus_e value + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : The method is used by other applications to register a new session whose state should be observed and distributed by the NSM + **> + method RegisterSession { + in { + + <** + @description : Session name to be registered + **> + String SessionName + + <** + @description : This is the name of the application that is registering the new session (this must be the applications systemd unit filename) + **> + String SessionOwner + + <** + @description : This parameter will be based upon the enum NsmSeat_e + **> + NodeStateManagerTypes.NsmSeat_e SeatID + + <** + @description : Will be based on the NsmSessionState_e but it will not be bounded by the values in that enum as extended session states are possible for new product sessions + **> + NodeStateManagerTypes.NsmSessionState_e SessionState + } + out { + + <** + @description : + Returned error code of the method. + NsmErrorStatus_e value + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : The method is used by other applications to remove a new session from the session list hosted by NSM + **> + method UnRegisterSession { + in { + + <** + @description : Session name to be unregistered + **> + String SessionName + + <** + @description : This is the name of the application that originally registered the session. It will be validated that this value matches the stored value from the registration + **> + String SessionOwner + + <** + @description : This parameter will be based upon the enum NsmSeat_e + **> + NodeStateManagerTypes.NsmSeat_e SeatID + } + out { + + <** + @description : + Returned error code of the method. + NsmErrorStatus_e value + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : This method can be used to read the number of failed applications in the system + **> + method GetAppHealthCount { + out { + + <** + @description : Number of currently failing apps + **> + UInt32 Count + } + } + + <** + @description : + The method returns the version number of the Node State Manager. The number is organized in four bytes: + + Version: VVV.RRR.PPP.BBB + + <literallayout> + VVV => Version [1..255] + RRR => Release [0..255] + PPP => Patch [0..255] + BBB => Build [0..255] + </literallayout> + **> + method GetInterfaceVersion { + out { + + <** + @description : Unsigned integer that represents the version number of the Node State Manager. + **> + UInt32 Version + } + } + + <** + @description : The method is used by a client to notify the NSM that a LifecycleRequest has been completed + **> + method LifecycleRequestComplete { + in { + + <** + @description : Status of the request to be performed. This will be based on the enum NsmErrorStatus_e + **> + NodeStateManagerTypes.NsmErrorStatus_e Status + } + out { + + <** + @description : NsmErrorStatus_e value + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } attribute Int32 BootMode + + attribute NodeStateManagerTypes.NsmRestartReason_e RestartReason + + attribute NodeStateManagerTypes.NsmShutdownReason_e ShutdownReason + + attribute NodeStateManagerTypes.NsmRunningReason_e WakeUpReason + +} + +<** + @author : Alexander Wenzel +**> + +interface LifecycleControl { + version { + major 1 + minor 0 + } + + <** + @description : The method is used by other applications to request a restart of the node. + **> + method RequestNodeRestart { + in { + + <** + @description : The passed value will be based upon the enum NsmRestartReason_e. + **> + NodeStateManagerTypes.NsmRestartReason_e RestartReason + + <** + @description : + This parameter will define the type of shutdown that is requested as part of the restart process. The acceptable values for this parameter are + + NSM_SHUTDOWNTYPE_NORMAL + and + NSM_SHUTDOWNTYPE_FAST + **> + UInt32 RestartType + } + out { + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : application mode + **> + method SetApplicationMode { + in { + + <** + @description : This parameter will be based upon the NsmApplicationMode_e + **> + NodeStateManagerTypes.NsmApplicationMode_e ApplicationModeId + } + out { + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : registered consumers of the new state + **> + method SetNodeState { + in { + + <** + @description : The passed value will be based upon the enum NsmNodeState_e + **> + NodeStateManagerTypes.NsmNodeState_e NodeStateId + } + out { + + <** + @description : The passed value will be based upon the enum NsmErrorStatus_e + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : The method has been introduced, because the property ‘BootMode’ can only be read by other applications. Nevertheless there are some exceptions where the property should be set by a restricted set of applications which will be handled within this method + **> + method SetBootMode { + in { + + <** + @description : The passed value will not be boundary checked to allow for product extensions. The actual value that a client should use will be defined in another common header that is currently not available + + + **> + Int32 BootMode + } + out { + + <** + @description : Returned error code for set. + **> + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : will use this information to keep a count of the number of failed applications within the current lifecycle. Additionally it will unset any sessions that the failing application may have had active. It will also be possible for the product node state machine to make a decision on what to do with this information, i.e. even reset the node or reset the node if too many applications have failed + **> + method SetAppHealthStatus { + in { + + <** + @description : This parameter can be used to give the name of the application that has failed (this must be the applications systemd unit name) + **> + String AppName + + <** + @description : The AppRunning will define whether the application is currently running or not + **> + Boolean AppRunning + } + out { + NodeStateManagerTypes.NsmErrorStatus_e ErrorCode + } + } + + <** + @description : This is required whilst in certain Node Application Modes (i.e. Transport, Factory) we do not want the LUC Applications started. Internally the Node State Manager will need to call a product interface to get the mapping back for the current NAM. + **> + method CheckLucRequired { + out { + + <** + @description : This will be a simple TRUE or FALSE to define whether the LUC is wanted in the current Lifecycle + **> + Boolean LucWanted + } + } + +} diff --git a/NodeStateAccess/interfaces/NodeStateManagerTypes.fdepl b/NodeStateAccess/interfaces/NodeStateManagerTypes.fdepl new file mode 100644 index 0000000..e0e9acf --- /dev/null +++ b/NodeStateAccess/interfaces/NodeStateManagerTypes.fdepl @@ -0,0 +1,55 @@ +/********************************************************************************************************************** + * + * Copyright (C) 2017 BMW AG + * + * Interface definition for NodeStateManager CommonAPI interface + * + * This Source Code Form is subject to the terms of the 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/. + * + **********************************************************************************************************************/ + +import "platform:/plugin/org.genivi.commonapi.someip/deployment/CommonAPI-SOMEIP_deployment_spec.fdepl" +import "NodeStateManagerTypes.fidl" + +define org.genivi.commonapi.someip.deployment for typeCollection +org.genivi.NodeStateManagerTypes { + + array NsmDataTypeArray { + } + + enumeration NsmApplicationMode_e { + } + + enumeration NsmCoreSessionName_e { + } + + enumeration NsmDataType_e { + } + + enumeration NsmErrorStatus_e { + } + + enumeration NsmNodeState_e { + } + + enumeration NsmRestartReason_e { + } + + enumeration NsmRunningReason_e { + } + + enumeration NsmSeat_e { + } + + enumeration NsmSessionState_e { + } + + enumeration NsmShutdownReason_e { + } + + enumeration NsmShutdownType_e { + } + +} diff --git a/NodeStateAccess/interfaces/NodeStateManagerTypes.fidl b/NodeStateAccess/interfaces/NodeStateManagerTypes.fidl new file mode 100644 index 0000000..d4aeaa2 --- /dev/null +++ b/NodeStateAccess/interfaces/NodeStateManagerTypes.fidl @@ -0,0 +1,268 @@ +/********************************************************************************************************************** + * + * Copyright (C) 2017 BMW AG + * + * Interface definition for NodeStateManager CommonAPI interface + * + * This Source Code Form is subject to the terms of the 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/. + * + **********************************************************************************************************************/ + +package org.genivi + +<** + @author : Alexander Wenzel +**> +typeCollection NodeStateManagerTypes { + version { + major 1 + minor 0 + } + array NsmDataTypeArray of UInt8 + + <** + @description : + The enumeration defines the different values for the application mode. + + Each possible value will indicate that a different level of functionality is expected to be provided in the current and subsequent lifecycles. + + This value will be used to define the "run level" that systemd should enable. + + The values shown in this list are those that are mandatory for the Platform but it will be possible for the product to extend the list as needed by rebuilding the Node State Manager + **> + enumeration NsmApplicationMode_e { + NsmApplicationMode_NotSet + NsmApplicationMode_Parking + NsmApplicationMode_Factory + NsmApplicationMode_Transport + NsmApplicationMode_Normal + NsmApplicationMode_Swl + NsmApplicationMode_Last + } + + <** + @description : + The constant string array defines the names of the sessions which are mandatory within the Platform. The strings defined here are used as first parameter for filtered registration to the signal ‘SessionStateChanged’. + + A separate method is provided for adding new sessions dynamically to the list of sessions monitored and distributed by the NSM + **> + enumeration NsmCoreSessionName_e { + + <** + @description : This session will be used by the Diagnosis SW to indicate the status of authenticated Diagnosis sessions. + **> + DiagnosisSession + + <** + @description : This is used by certain OEM's and will also need to be a wake-up reason as it defines we start to a point where we can control the HEVAC + **> + HEVACSession + + <** + @description : + This is an open session state that can be used differently for different products. + + Traditionally it is expected that this session state will be set by the HMI when they are completely running and all graphics have been rendered on the appropriate layer. + + This could for instance be used to determine when to enable the display or to switch from a Splashscreen to the real HMI to ensure that the user does not see the HMI before it is completely ready. + **> + HmiActiveSession + + <** + @description : This session will be true/active when there is Network Activity and the Head Unit is in a user perceived on state and therefore is directly reliant on the Network. + **> + NetworkActiveSession + + <** + @description : This session will be true/active when there is Network Activity but the Head Unit is in a user perceived off state and therefore is not directly using the Network + **> + NetworkPassiveSession + + <** + @description : This is a product decision but it is likely that the PDC active will overrule a Poor and non critical failure. + **> + PDCSession + + <** + @description : Permanent/Entertainment mode is normally active when the user has started the target via the Power On button and clamp state is not active. This mode would normally allow the target to run for a configurable period of time before an automatic shutdown will occur. + **> + PermanentModeSession + + <** + @description : Indicates that a phone call is in progress and would normally delay the NSM from delaying the system shutdown + **> + PhoneSession + + <** + @description : This is a product decision but it is likely that the RVC active will overrule a Poor and non critical failure + **> + RVCSession + + <** + @description : When SWL is in progress we would need to handle reboot requests and recovery requests differently + **> + SWLSession + + <** + @description : This session will be used by the Node Resource Manager to indicate that we are in a low memory state. Responsible applications can register for this event and reduce their memory overheads + **> + MemoryLowSession + } + + <** + @description : This enum defines the different data available within the NSM and will be used by the NSMc when requesting to read data + **> + enumeration NsmDataType_e { + NsmDataType_AppMode + NsmDataType_NodeState + NsmDataType_RestartReason + NsmDataType_SessionState + NsmDataType_ShutdownReason + NsmDataType_BootMode + NsmDataType_RunningReason + NsmDataType_RegisterSession + NsmDataType_UnRegisterSession + } + + <** + @description : + The enumeration defines the different error level used as return values + + The values shown in this list are those that are mandatory for the Platform but it will be possible for the product to extend the list as needed by rebuilding the Node State Manager + **> + enumeration NsmErrorStatus_e { + NsmErrorStatus_NotSet + NsmErrorStatus_Ok + NsmErrorStatus_Error + NsmErrorStatus_Dbus + NsmErrorStatus_Internal + NsmErrorStatus_Parameter + NsmErrorStatus_WrongSession + NsmErrorStatus_ResponsePending + NsmErrorStatus_WrongClient + NsmErrorStatus_Last + } + + <** + @description : + This enumeration defines the different node states. There is only one node state active at the same time. The NodeState system itself and other system components need to know the NodeState to decide whether certain actions can be performed in the current state. + + The values shown in this list are those that are mandatory for the Platform but it will be possible for the product to extend the list as needed by rebuilding the Node State Manager + **> + enumeration NsmNodeState_e { + NsmNodeState_NotSet + NsmNodeState_StartUp + NsmNodeState_BaseRunning + NsmNodeState_LucRunning + NsmNodeState_FullyRunning + NsmNodeState_FullyOperational + NsmNodeState_ShuttingDown + NsmNodeState_ShutdownDelay + NsmNodeState_FastShutdown + NsmNodeState_DegradedPower + NsmNodeState_Shutdown + NsmNodeState_Resume + NsmNodeState_Last + } + + <** + @description : + The enumeration defines the different restart reasons. + + The restart reason will only be updated by the Node State Manager during the system startup phase. The NSM will use the value that it stored persistently in the previous lifecycle when its interface RequestNodeRestart was called. + + The values shown in this list are those that are mandatory for the Platform but it will be possible for the product to extend the list as needed by rebuilding the Node State Manager + **> + enumeration NsmRestartReason_e { + NsmRestartReason_NotSet + NsmRestartReason_ApplicationFailure + NsmRestartReason_Diagnosis + NsmRestartReason_Swl + NsmRestartReason_User + NsmRestartReason_RemoteSwl + NsmRestartReason_FactoryTest + NsmRestartReason_Application + NsmRestartReason_OverTemperature + NsmRestartReason_Last + } + + enumeration NsmRunningReason_e { + NsmRunningReason_NotSet + NsmRunningReason_WakeupCan + NsmRunningReason_WakeupMediaEject + NsmRunningReason_WakeupMediaInsertion + NsmRunningReason_WakeupHevac + NsmRunningReason_WakeupPhone + NsmRunningReason_WakeupPowerOnButton + NsmRunningReason_StartupFstp + NsmRunningReason_StartupSwitchToPower + NsmRunningReason_RestartSwRequest + NsmRunningReason_RestartInternalHealth + NsmRunningReason_RestartExternalHealth + NsmRunningReason_RestartUnexpected + NsmRunningReason_RestartUser + NsmRunningReason_Unknown + NsmRunningReason_WakeupEthernet + NsmRunningReason_Bootloader + NsmRunningReason_RemoteUpdate + NsmRunningReason_SystemReset + NsmRunningReason_SystemHardReset + NsmRunningReason_WatchdogReset + NsmRunningReason_RseEject + NsmRunningReason_RseButtonLeft + NsmRunningReason_RseButtonRight + NsmRunningReason_PlatformEnd + } + + <** + @description : This can be used to identify, where needed, the car seat that is applicable for the data item being referenced + **> + enumeration NsmSeat_e { + NsmSeat_NotSet + NsmSeat_Driver + NsmSeat_CoDriver + NsmSeat_Rear1 + NsmSeat_Rear2 + NsmSeat_Rear3 + NsmSeat_Last + } + + <** + @description : The enumeration defines the currently foreseen session states + **> + enumeration NsmSessionState_e { + NsmSessionState_Unregistered + NsmSessionState_Inactive + NsmSessionState_Active + } + + <** + @description : + The enumeration defines the different shutdown reasons. + + The Node State Manager will update shutdown reason based on Lifecycle events in the system and will store it persistently for anyone interested in the value in the next lifecycle + + The values shown in this list are those that are mandatory for the Platform but it will be possible for the product to extend the list as needed by rebuilding the Node State Manager + **> + enumeration NsmShutdownReason_e { + NsmShutdownReason_NotSet + NsmShutdownReason_Normal + NsmShutdownReason_SupplyBad + NsmShutdownReason_SupplyPoor + NsmShutdownReason_ThermalBad + NsmShutdownReason_ThermalPoor + NsmShutdownReason_SwlNotActive + NsmShutdownReason_Last + } + + enumeration NsmShutdownType_e { + NsmShutdownTypeNot = 0 + NsmShutdownTypeNormal = 1 + NsmShutdownTypeFast = 2 + NsmShutdownTypeParallel = 4 + NsmShutdownTypeRunup = 8 + } + +} diff --git a/NodeStateAccess/interfaces/cmake/core_stub_config.cmake.in b/NodeStateAccess/interfaces/cmake/core_stub_config.cmake.in new file mode 100644 index 0000000..4b9c3a6 --- /dev/null +++ b/NodeStateAccess/interfaces/cmake/core_stub_config.cmake.in @@ -0,0 +1,27 @@ +####################################################################################################################### +# +# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH +# +# Author: Sven_Hassler@mentor.com +# +# CMake file of NSM Interfaces +# +# This Source Code Form is subject to the terms of the 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/. +# +####################################################################################################################### + +# Automatically find dependency packages when using this package: +include(CMakeFindDependencyMacro) + +foreach(DEPENDENCY @CORE_STUB_LINK_LIBRARIES@) + find_dependency(${DEPENDENCY} REQUIRED) +endforeach() + +# Include the target file: +get_filename_component(GLUE_LIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +if(NOT TARGET @CORE_STUB_NAME@) + include("${GLUE_LIB_CMAKE_DIR}/@CORE_STUB_NAME@Targets.cmake") +endif() diff --git a/NodeStateAccess/interfaces/cmake/someip_proxy_config.cmake.in b/NodeStateAccess/interfaces/cmake/someip_proxy_config.cmake.in new file mode 100644 index 0000000..3dca3d8 --- /dev/null +++ b/NodeStateAccess/interfaces/cmake/someip_proxy_config.cmake.in @@ -0,0 +1,27 @@ +####################################################################################################################### +# +# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH +# +# Author: Sven_Hassler@mentor.com +# +# CMake file of NSM Interfaces +# +# This Source Code Form is subject to the terms of the 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/. +# +####################################################################################################################### + +# Automatically find dependency packages when using this package: +include(CMakeFindDependencyMacro) + +foreach(DEPENDENCY @SOMEIP_PROXY_LINK_LIBRARIES@) + find_dependency(${DEPENDENCY} REQUIRED) +endforeach() + +# Include the target file: +get_filename_component(GLUE_LIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +if(NOT TARGET @SOMEIP_PROXY_NAME@) + include("${GLUE_LIB_CMAKE_DIR}/@SOMEIP_PROXY_NAME@Targets.cmake") +endif() diff --git a/NodeStateAccess/interfaces/cmake/someip_stub_config.cmake.in b/NodeStateAccess/interfaces/cmake/someip_stub_config.cmake.in new file mode 100644 index 0000000..f53dae2 --- /dev/null +++ b/NodeStateAccess/interfaces/cmake/someip_stub_config.cmake.in @@ -0,0 +1,27 @@ +####################################################################################################################### +# +# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH +# +# Author: Sven_Hassler@mentor.com +# +# CMake file of NSM Interfaces +# +# This Source Code Form is subject to the terms of the 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/. +# +####################################################################################################################### + +# Automatically find dependency packages when using this package: +include(CMakeFindDependencyMacro) + +foreach(DEPENDENCY @SOMEIP_STUB_LINK_LIBRARIES@) + find_dependency(${DEPENDENCY} REQUIRED) +endforeach() + +# Include the target file: +get_filename_component(GLUE_LIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +if(NOT TARGET @SOMEIP_STUB_NAME@) + include("${GLUE_LIB_CMAKE_DIR}/@SOMEIP_STUB_NAME@Targets.cmake") +endif() |
