Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
5444c37
remove dead credentials code
Jan 21, 2026
c2fb008
fix logging prefix in flush function
Jan 21, 2026
b8b53fb
misc: add defaults to CMakePresets
Jan 21, 2026
f4722a5
the public API of local_endpoints does not re-enter caller
Jan 21, 2026
cac2cd2
scoped lock to all defined lock guard recursive mutexes
Jan 21, 2026
3c99c3a
endpoints: drop prepare_stop
Jan 21, 2026
0ac6c1f
tests: remove valgrind trace-children-skip
Jan 21, 2026
0d9ff23
tests: stop routing app last
Jan 21, 2026
9b180fb
tests: more test speedups
Jan 22, 2026
5e4d305
remove unused definitions
Jan 22, 2026
17e20df
Extend helpers to simulate suspend
Jan 22, 2026
e886ac0
enable ctest -R for fake socket tests
Jan 22, 2026
f62440b
Fix plugin_manager_impl singleton free-after-use on dtor bug
Jan 22, 2026
0e0065e
use local_endpoint in rmc to prepare header
Jan 22, 2026
c7f9ea0
Remove magic sleeps for IPC
Jan 23, 2026
8efbc08
routing: send initial event on *EVERY* sub
Jan 26, 2026
688c7c0
tests: fix offer_test_local race
Jan 26, 2026
8e8b7f3
misc: remove unused defs + useless mutex
Jan 26, 2026
6d95117
print command id as number
Jan 27, 2026
4c991c1
tests: fix usei_fixture.no_overwrite*
Jan 27, 2026
2e3f8eb
build: cleanup exported symbols
Jan 27, 2026
2865256
tests: rewrite process_manager
Jan 27, 2026
69521dc
Fix someip_tp_tests fragility
Jan 28, 2026
305311e
tests: fix offer_test_local race (again)
Jan 28, 2026
175c55c
rscm: add logging of client-id
Jan 28, 2026
b9b80f9
misc: "pragma once" the entire codebase
Jan 28, 2026
26da3e5
Create subscribe_before_register test
Jan 29, 2026
532f2a2
fixes data race when calling `get_local_port()`
Jan 29, 2026
69e8418
debouncing: drop `send_current_value_after`
Jan 30, 2026
1f63ef8
Add shutdown_test for IPC
Jan 30, 2026
dce4e9d
tests: fix block_registration_process
Jan 30, 2026
e79aeb4
Fix internal.hpp with ANDROID_CI_BUILD flag
Feb 2, 2026
60ae11a
fix delayed availability
Feb 2, 2026
1cef9c4
fix missing find on resume
Feb 2, 2026
3d21935
vSomeIP-Lib 3.6.4 Release
Feb 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion Android.bp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ cc_library_shared {

cflags: [
"-DWITHOUT_SYSTEMD",
"-DVSOMEIP_VERSION=\"3.6.3\"",
"-DVSOMEIP_VERSION=\"3.6.4\"",
"-DVSOMEIP_BASE_PATH=\"/vendor/run/someip/\"",
],

Expand Down
4 changes: 2 additions & 2 deletions Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ LOCAL_CFLAGS := \
-frtti \
-fexceptions \
-DWITHOUT_SYSTEMD \
-DVSOMEIP_VERSION=\"3.6.3\" \
-DVSOMEIP_VERSION=\"3.6.4\" \
-DVSOMEIP_BASE_PATH=\"/vendor/run/someip/\" \
-Wno-unused-parameter \
-Wno-non-virtual-dtor \
Expand Down Expand Up @@ -159,7 +159,7 @@ LOCAL_CFLAGS := \
-frtti \
-fexceptions \
-DWITHOUT_SYSTEMD \
-DVSOMEIP_VERSION=\"3.6.3\" \
-DVSOMEIP_VERSION=\"3.6.4\" \
-DVSOMEIP_BASE_PATH=\"/vendor/run/someip/\" \
-Wno-unused-parameter \
-Wno-non-virtual-dtor \
Expand Down
38 changes: 38 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
Changes
=======
v3.6.4
- global
- improve logging
- add defaults to CMakePresets
- scoped lock all recursive mutexes
- remove unused definitions
- cleanup exported symbols
- pragma once the entire codebase
- debouncing drop send_current_value_after
- fix internal.hpp with ANDROID_CI_BUILD flag

- application
- fix plugin_manager_impl singleton free-after-use on dtor bug

- endpoints
- refactor local_endpoint::start
- drop prepare_stop
- fix data race when calling get_local_port()
- fix delayed availability

- routing
- send initial event on every sub
- fix missing find on resume

- tests
- general test speedups
- remove valgrind trace-children-skip
- stop routing app last
- extend helpers to simulate suspend
- enable ctest -R for fake socket tests
- fix offer_test_local race condition
- fix usei_fixture.no_overwrite
- fix someip_tp_tests
- fix block_registration_process
- rewrite process_manager
- new subscribe_before_register test
- new shutdown_test for IPC

v3.6.3
- global
- rework shutdown to simplify thread detach mechanism
Expand Down
70 changes: 54 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ set (VSOMEIP_NAME vsomeip3)

set (VSOMEIP_MAJOR_VERSION 3)
set (VSOMEIP_MINOR_VERSION 6)
set (VSOMEIP_PATCH_VERSION 3)
set (VSOMEIP_PATCH_VERSION 4)
set (VSOMEIP_HOTFIX_VERSION 0)

set (VSOMEIP_VERSION ${VSOMEIP_MAJOR_VERSION}.${VSOMEIP_MINOR_VERSION}.${VSOMEIP_PATCH_VERSION})
Expand Down Expand Up @@ -120,11 +120,22 @@ endif ()
if (NOT MSVC)
# Sanitizers
if (ENABLE_SANITIZERS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=leak -fsanitize=undefined")
set(flags "-fno-omit-frame-pointer -fsanitize=address -fsanitize=leak -fsanitize=undefined -pthread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flags}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flags}")
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${flags}")
endif ()

if (ENABLE_THREAD_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer -fsanitize=thread -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=thread -pthread")
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=thread -pthread")
endif ()

if (ENABLE_SANITIZERS OR ENABLE_THREAD_SANITIZER)
# force RPATH instead of RUNPATH
# see https://stackoverflow.com/questions/53286707/why-would-runpath-be-ignored, *sans cause issues!
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--disable-new-dtags")
endif ()

if (ENABLE_PROFILING)
Expand Down Expand Up @@ -278,6 +289,8 @@ else()
set(USE_RT "rt")
endif()

set(CMAKE_POSITION_INDEPENDENT_CODE ON)

################################################################################
# Configuration library
################################################################################
Expand All @@ -286,10 +299,14 @@ file(GLOB ${VSOMEIP_NAME}-cfg_SRC
)
list(SORT ${VSOMEIP_NAME}-cfg_SRC)
if (VSOMEIP_ENABLE_MULTIPLE_ROUTING_MANAGERS EQUAL 0)
add_library(${VSOMEIP_NAME}-cfg SHARED ${${VSOMEIP_NAME}-cfg_SRC})
add_library(${VSOMEIP_NAME}-cfg-internal OBJECT ${${VSOMEIP_NAME}-cfg_SRC})
target_link_libraries(${VSOMEIP_NAME}-cfg-internal ${VSOMEIP_NAME}-internal ${Boost_LIBRARIES} ${USE_RT} ${DL_LIBRARY} ${SystemD_LIBRARIES})

add_library(${VSOMEIP_NAME}-cfg SHARED $<TARGET_OBJECTS:${VSOMEIP_NAME}-cfg-internal>)
set_target_properties (${VSOMEIP_NAME}-cfg PROPERTIES VERSION ${VSOMEIP_VERSION} SOVERSION ${VSOMEIP_MAJOR_VERSION})
target_compile_features(${VSOMEIP_NAME}-cfg PRIVATE cxx_std_17)
if (MSVC)
set_target_properties(${VSOMEIP_NAME}-cfg-internal PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION_PLUGIN")
set_target_properties(${VSOMEIP_NAME}-cfg PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION_PLUGIN")
endif()

Expand Down Expand Up @@ -321,20 +338,28 @@ endif()

list(SORT ${VSOMEIP_NAME}_SRC)

add_library(${VSOMEIP_NAME} SHARED ${${VSOMEIP_NAME}_SRC})
set_target_properties (${VSOMEIP_NAME} PROPERTIES VERSION ${VSOMEIP_VERSION} SOVERSION ${VSOMEIP_MAJOR_VERSION})
# internal object library, all symbols exposed, used for testing
add_library(${VSOMEIP_NAME}-internal OBJECT ${${VSOMEIP_NAME}_SRC})
target_link_libraries(${VSOMEIP_NAME}-internal ${Boost_LIBRARIES} ${USE_RT} ${DL_LIBRARY} ${DLT_LIBRARIES} ${SystemD_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})

add_library(${VSOMEIP_NAME} SHARED $<TARGET_OBJECTS:${VSOMEIP_NAME}-internal>)
# libvsomeip also `dlopens` other libs (cfg, sd, ..) so leave a rpath hint
set_target_properties(${VSOMEIP_NAME} PROPERTIES BUILD_RPATH "${CMAKE_BINARY_DIR}")
set_target_properties(${VSOMEIP_NAME} PROPERTIES VERSION ${VSOMEIP_VERSION} SOVERSION ${VSOMEIP_MAJOR_VERSION})
target_compile_features(${VSOMEIP_NAME} PRIVATE cxx_std_17)
if (MSVC)
set_target_properties(${VSOMEIP_NAME}-internal PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION")
set_target_properties(${VSOMEIP_NAME}-internal PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
set_target_properties(${VSOMEIP_NAME} PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION")
set_target_properties(${VSOMEIP_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
else ()
if(${CMAKE_SYSTEM_NAME} MATCHES "QNX")
# add syscall wrappers to deal with CLOEXEC
set_target_properties(${VSOMEIP_NAME} PROPERTIES LINK_FLAGS "-Wl,-wrap,socket -Wl,-wrap,accept -Wl,-wrap,open")
else ()
# add syscall wrappers to deal with CLOEXEC + react on certain errors
set_target_properties(${VSOMEIP_NAME} PROPERTIES LINK_FLAGS "-Wl,-wrap,socket -Wl,-wrap,accept -Wl,-wrap,open -Wl,-wrap,close -Wl,-wrap,recvfrom -Wl,-wrap,recvmsg -Wl,-wrap,sendto -Wl,-wrap,sendmsg -Wl,-wrap,epoll_wait -Wl,-wrap,epoll_pwait")
endif ()
if(${CMAKE_SYSTEM_NAME} MATCHES "QNX")
# add syscall wrappers to deal with CLOEXEC
set_target_properties(${VSOMEIP_NAME} PROPERTIES LINK_FLAGS "-Wl,-wrap,socket -Wl,-wrap,accept -Wl,-wrap,open")
else ()
# add syscall wrappers to deal with CLOEXEC + react on certain errors
set_target_properties(${VSOMEIP_NAME} PROPERTIES LINK_FLAGS "-Wl,-wrap,socket -Wl,-wrap,accept -Wl,-wrap,open -Wl,-wrap,close -Wl,-wrap,recvfrom -Wl,-wrap,recvmsg -Wl,-wrap,sendto -Wl,-wrap,sendmsg -Wl,-wrap,epoll_wait -Wl,-wrap,epoll_pwait")
endif ()
endif ()
target_include_directories(${VSOMEIP_NAME} INTERFACE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/interface>
Expand All @@ -359,10 +384,14 @@ file(GLOB ${VSOMEIP_NAME}-sd_SRC
)
list(SORT ${VSOMEIP_NAME}-sd_SRC)

add_library(${VSOMEIP_NAME}-sd SHARED ${${VSOMEIP_NAME}-sd_SRC})
add_library(${VSOMEIP_NAME}-sd-internal OBJECT ${${VSOMEIP_NAME}-sd_SRC})
target_link_libraries(${VSOMEIP_NAME}-sd-internal ${VSOMEIP_NAME}-internal ${Boost_LIBRARIES} ${USE_RT} ${DL_LIBRARY} ${SystemD_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})

add_library(${VSOMEIP_NAME}-sd SHARED $<TARGET_OBJECTS:${VSOMEIP_NAME}-sd-internal>)
target_compile_features(${VSOMEIP_NAME}-sd PRIVATE cxx_std_17)
set_target_properties (${VSOMEIP_NAME}-sd PROPERTIES VERSION ${VSOMEIP_VERSION} SOVERSION ${VSOMEIP_MAJOR_VERSION})
if (MSVC)
set_target_properties(${VSOMEIP_NAME}-sd-internal PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION_PLUGIN")
set_target_properties(${VSOMEIP_NAME}-sd PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION_PLUGIN")
endif ()

Expand All @@ -377,10 +406,14 @@ file(GLOB_RECURSE ${VSOMEIP_NAME}-e2e_SRC
)
list(SORT ${VSOMEIP_NAME}-e2e_SRC)

add_library(${VSOMEIP_NAME}-e2e SHARED ${${VSOMEIP_NAME}-e2e_SRC})
add_library(${VSOMEIP_NAME}-e2e-internal OBJECT ${${VSOMEIP_NAME}-e2e_SRC})
target_link_libraries(${VSOMEIP_NAME}-e2e-internal ${VSOMEIP_NAME}-internal ${Boost_LIBRARIES} ${USE_RT} ${DL_LIBRARY} ${SystemD_LIBRARIES})

add_library(${VSOMEIP_NAME}-e2e SHARED $<TARGET_OBJECTS:${VSOMEIP_NAME}-e2e-internal>)
target_compile_features(${VSOMEIP_NAME}-e2e PRIVATE cxx_std_17)
set_target_properties (${VSOMEIP_NAME}-e2e PROPERTIES VERSION ${VSOMEIP_VERSION} SOVERSION ${VSOMEIP_MAJOR_VERSION})
if (MSVC)
set_target_properties(${VSOMEIP_NAME}-e2e-internal PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION_PLUGIN")
set_target_properties(${VSOMEIP_NAME}-e2e PROPERTIES COMPILE_DEFINITIONS "VSOMEIP_DLL_COMPILATION_PLUGIN")
endif ()

Expand Down Expand Up @@ -524,11 +557,12 @@ configure_file (${VSOMEIP_NAME}Config.cmake.in "${PROJECT_BINARY_DIR}/${VSOMEIP_
configure_file (${VSOMEIP_NAME}ConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/${VSOMEIP_NAME}ConfigVersion.cmake" @ONLY)

# configure internal.hpp for correct version number
if(NOT ANDROID_CI_BUILD)
configure_file (
"${PROJECT_SOURCE_DIR}/implementation/configuration/include/internal.hpp.in"
"${PROJECT_SOURCE_DIR}/implementation/configuration/include/internal.hpp"
)

endif ()
# Install the ${VSOMEIP_NAME}Config.cmake and ${VSOMEIP_NAME}ConfigVersion.cmake
install (
FILES
Expand Down Expand Up @@ -602,6 +636,8 @@ add_subdirectory( examples/routingmanagerd )
add_subdirectory( examples/hello_world )
endif()

add_subdirectory( examples/wait-until-available )

# build tools
add_custom_target( tools )
add_subdirectory( tools/vsomeip_ctrl )
Expand All @@ -614,6 +650,8 @@ add_subdirectory( examples EXCLUDE_FROM_ALL )
# add test directory
enable_testing()

option(WITH_TEST_DISCOVERY "Enables ctest regex selection of single test cases" OFF)

add_subdirectory( test EXCLUDE_FROM_ALL )

if (${CMAKE_SYSTEM_NAME} MATCHES "QNX")
Expand Down
17 changes: 14 additions & 3 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
},
"CMAKE_CXX_FLAGS_INIT": {
"type": "STRING",
"value": "--coverage -Wno-error=tsan -fprofile-update=atomic"
"value": "--coverage -fprofile-update=atomic"
},
"TEST_IP_SLAVE_SECOND": {
"type": "STRING",
Expand Down Expand Up @@ -89,7 +89,6 @@
"displayName": "Network tests (CI)",
"description": "Preset for network tests on CI",
"environment": {
"LD_LIBRARY_PATH": "/home/build",
"LXC_TEST_MASTER_IP": "master",
"LXC_TEST_SLAVE_IP": "slave",
"TSAN_OPTIONS": "suppressions=${sourceDir}/test/tsan-suppressions.txt",
Expand All @@ -99,7 +98,19 @@
"output": {
"maxFailedTestOutputSize": 1e9,
"maxPassedTestOutputSize": 1e9,
"outputOnFailure": true
"outputOnFailure": true,
"verbosity": "default"
},
"execution": {
"repeat": {
"mode": "until-fail",
"count": 1
}
},
"filter": {
"include": {
"name": "^"
}
}
}
]
Expand Down
1 change: 0 additions & 1 deletion documentation/vsomeipConfiguration.md
Original file line number Diff line number Diff line change
Expand Up @@ -1598,7 +1598,6 @@ Debounce time for requests to the service on 192.168.1.9 should have a:
- **mask** - 1 Byte bitmask applied to byte at given payload index. **Example mask**: 0x0f ignores payload changes in low nibble of the byte at given index.
- **interval** - Specifies if the event shall be debounced based on elapsed time interval. (valid values: `time in ms`, `never`). The default value is `never`.
- **on_change_resets_interval** (optional) - Specifies if interval timer is reset when payload change was detected, valid values are `false`, `true`. The default value is `false`.
- **send_current_value_after** (optional) - Specifies if last message should be sent after interval timeout, valid values are `false`, `true`. The default value is `false`.


<details><summary>Debounce configuration</summary>
Expand Down
2 changes: 1 addition & 1 deletion examples/routingmanagerd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "QNX")
target_link_libraries(routingmanagerd socket)
endif()
add_dependencies(routingmanagerd ${VSOMEIP_NAME})
add_dependencies(routingmanagerd ${VSOMEIP_NAME} ${VSOMEIP_NAME}-cfg ${VSOMEIP_NAME}-sd ${VSOMEIP_NAME}-e2e)

option(VSOMEIP_INSTALL_ROUTINGMANAGERD "Whether or not to install the routing manager daemon.")

Expand Down
5 changes: 1 addition & 4 deletions examples/sample-ids.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
// 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/.

#ifndef VSOMEIP_EXAMPLES_SAMPLE_IDS_HPP
#define VSOMEIP_EXAMPLES_SAMPLE_IDS_HPP
#pragma once

#define SAMPLE_SERVICE_ID 0x1234
#define SAMPLE_INSTANCE_ID 0x5678
Expand All @@ -19,5 +18,3 @@
#define OTHER_SAMPLE_SERVICE_ID 0x0248
#define OTHER_SAMPLE_INSTANCE_ID 0x5422
#define OTHER_SAMPLE_METHOD_ID 0x1421

#endif // VSOMEIP_EXAMPLES_SAMPLE_IDS_HPP
8 changes: 8 additions & 0 deletions examples/wait-until-available/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright (C) 2014-2026 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
# 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/.

add_executable(wait-until-available wait-until-available.cpp)
target_link_libraries(wait-until-available ${VSOMEIP_NAME})
add_dependencies(wait-until-available ${VSOMEIP_NAME})
Loading
Loading