Skip to content

Commit 02c199d

Browse files
vSomeIP-Lib 3.4.10 (#582)
Notes: - Fix QNX build - Fix missing Stop Offer - Apply extra fixes to QNX environment - Remove key <service, instance> from the offer_commands_ - #478: deleted unused param _use_exclusive_proxy - Fix code smell related to condition variable - #462: Fix IPv6 Service Discovery - Added multicast_mutex to async function that makes use of multicast socket - #479: Allow service_discovery to continue without random_device - Fix availability handler sending false on offer - Set host/port in vsomeip_sec_client_t whenever possible - Use executor_work_guard instead of io_context::work for boost v1.66 and higher - Update Windows build - Added profile 07 as an option for E2E protection - ASIO: use heap-allocation to avoid using garbage data - Fix integer underflow in server_endpoint_impl.cpp - Cleanup prepare_stop_handlers_ - Automatic unsubscribe - Debounce now works without routingmanagerd running - Debouncing: Send last received value after debounce time + X - Fix resource deadlock avoided crash - Use closure instead of callable struct
1 parent 70d59ed commit 02c199d

File tree

91 files changed

+5538
-785
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+5538
-785
lines changed

Android.bp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ cc_library_shared {
8080

8181
cflags: [
8282
"-DWITHOUT_SYSTEMD",
83-
"-DVSOMEIP_COMPAT_VERSION=\"3.4.9\"",
83+
"-DVSOMEIP_VERSION=\"3.4.10\"",
84+
"-DVSOMEIP_COMPAT_VERSION=\"3.4.10\"",
8485
"-DVSOMEIP_BASE_PATH=\"/vendor/run/someip/\"",
8586
"-DUSE_DLT",
8687
],

Android.mk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ LOCAL_CFLAGS := \
100100
-frtti \
101101
-fexceptions \
102102
-DWITHOUT_SYSTEMD \
103-
-DVSOMEIP_VERSION=\"3.4.9\" \
103+
-DVSOMEIP_VERSION=\"3.4.10\" \
104104
-DVSOMEIP_BASE_PATH=\"/vendor/run/someip/\" \
105105
-Wno-unused-parameter \
106106
-Wno-non-virtual-dtor \
@@ -147,7 +147,7 @@ LOCAL_CFLAGS := \
147147
-frtti \
148148
-fexceptions \
149149
-DWITHOUT_SYSTEMD \
150-
-DVSOMEIP_VERSION=\"3.4.9\" \
150+
-DVSOMEIP_VERSION=\"3.4.10\" \
151151
-DVSOMEIP_BASE_PATH=\"/vendor/run/someip/\" \
152152
-Wno-unused-parameter \
153153
-Wno-non-virtual-dtor \
@@ -194,8 +194,8 @@ LOCAL_CFLAGS := \
194194
-frtti \
195195
-fexceptions \
196196
-DWITHOUT_SYSTEMD \
197-
-DVSOMEIP_VERSION=\"3.4.9\" \
198-
-DVSOMEIP_COMPAT_VERSION=\"3.4.9\" \
197+
-DVSOMEIP_VERSION=\"3.4.10\" \
198+
-DVSOMEIP_COMPAT_VERSION=\"3.4.10\" \
199199
-DVSOMEIP_BASE_PATH=\"/vendor/run/someip/\" \
200200
-Wno-unused-parameter \
201201
-Wno-non-virtual-dtor \

CHANGES

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,30 @@
11
Changes
22
=======
33

4+
v3.4.10
5+
- Fix QNX build
6+
- Fix missing Stop Offer
7+
- Apply extra fixes to QNX environment
8+
- Remove key <service, instance> from the offer_commands_
9+
- COVESA#478: deleted unused param _use_exclusive_proxy
10+
- Fix code smell related to condition variable
11+
- COVESA#462: Fix IPv6 Service Discovery
12+
- Added multicast_mutex to async function that makes use of multicast socket
13+
- COVESA#479: Allow service_discovery to continue without random_device
14+
- Fix availability handler sending false on offer
15+
- Set host/port in vsomeip_sec_client_t whenever possible
16+
- Use executor_work_guard instead of io_context::work for boost v1.66 and higher
17+
- Update Windows build
18+
- Added profile 07 as an option for E2E protection
19+
- ASIO: use heap-allocation to avoid using garbage data
20+
- Fix integer underflow in server_endpoint_impl.cpp
21+
- Cleanup prepare_stop_handlers_
22+
- Automatic unsubscribe
23+
- Debounce now works without routingmanagerd running
24+
- Debouncing: Send last received value after debounce time + X
25+
- Fix resource deadlock avoided crash
26+
- Use closure instead of callable struct
27+
428
v3.4.9
529
- Merge COVESA PR447 with support for QNX 7.1
630
- Merge COVESA PR470 with changes to not instantiate

CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ set (VSOMEIP_COMPAT_NAME vsomeip)
1111

1212
set (VSOMEIP_MAJOR_VERSION 3)
1313
set (VSOMEIP_MINOR_VERSION 4)
14-
set (VSOMEIP_PATCH_VERSION 9)
15-
set (VSOMEIP_HOTFIX_VERSION 1)
14+
set (VSOMEIP_PATCH_VERSION 10)
15+
set (VSOMEIP_HOTFIX_VERSION 0)
1616

1717
set (VSOMEIP_VERSION ${VSOMEIP_MAJOR_VERSION}.${VSOMEIP_MINOR_VERSION}.${VSOMEIP_PATCH_VERSION})
1818
set (PACKAGE_VERSION ${VSOMEIP_VERSION}) # Used in documentation/doxygen.in
@@ -251,7 +251,6 @@ if (MSVC)
251251
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS -D_WIN32_WINNT=${BOOST_WINDOWS_VERSION} -DWIN32 -DBOOST_ASIO_DISABLE_IOCP /EHsc /std:c++14 /wd4250")
252252
set(USE_RT "")
253253
link_directories(${Boost_LIBRARY_DIR_DEBUG})
254-
ADD_DEFINITIONS( -DBOOST_ALL_DYN_LINK )
255254
elseif(${CMAKE_SYSTEM_NAME} MATCHES "QNX")
256255
set(USE_RT "")
257256
else()

documentation/vsomeipUserGuide

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,10 @@ Specifies if the event shall be debounced based on elapsed time interval.
982982
Specifies if interval timer is reset when payload change was detected.
983983
(valid values: _false_, _true_). Defaults to _false_.
984984

985+
*** `send_current_value_after` (optional)
986+
Specifies if last message should be sent after interval timeout.
987+
(valid values: _false_, _true_). Defaults to _false_.
988+
985989
* `routing` (optional)
986990
+
987991
Specifies the properties of the routing. Either a string that specifies the application that hosts the

examples/hello_world/hello_world_service.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2015-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
1+
// Copyright (C) 2015-2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
22
// This Source Code Form is subject to the terms of the Mozilla Public
33
// License, v. 2.0. If a copy of the MPL was not distributed with this
44
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -39,7 +39,13 @@ class hello_world_service {
3939

4040
~hello_world_service()
4141
{
42-
stop_thread_.join();
42+
if (std::this_thread::get_id() != stop_thread_.get_id()) {
43+
if (stop_thread_.joinable()) {
44+
stop_thread_.join();
45+
}
46+
} else {
47+
stop_thread_.detach();
48+
}
4349
}
4450

4551
bool init()

examples/notify-sample.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
1+
// Copyright (C) 2014-2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
22
// This Source Code Form is subject to the terms of the Mozilla Public
33
// License, v. 2.0. If a copy of the MPL was not distributed with this
44
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -89,8 +89,20 @@ class service_sample {
8989
notify_condition_.notify_one();
9090
app_->clear_all_handler();
9191
stop_offer();
92-
offer_thread_.join();
93-
notify_thread_.join();
92+
if (std::this_thread::get_id() != offer_thread_.get_id()) {
93+
if (offer_thread_.joinable()) {
94+
offer_thread_.join();
95+
}
96+
} else {
97+
offer_thread_.detach();
98+
}
99+
if (std::this_thread::get_id() != notify_thread_.get_id()) {
100+
if (notify_thread_.joinable()) {
101+
notify_thread_.join();
102+
}
103+
} else {
104+
notify_thread_.detach();
105+
}
94106
app_->stop();
95107
}
96108
#endif

examples/request-sample.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
1+
// Copyright (C) 2014-2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
22
// This Source Code Form is subject to the terms of the Mozilla Public
33
// License, v. 2.0. If a copy of the MPL was not distributed with this
44
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -94,7 +94,13 @@ class client_sample {
9494
app_->clear_all_handler();
9595
app_->release_service(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID);
9696
condition_.notify_one();
97-
sender_.join();
97+
if (std::this_thread::get_id() != sender_.get_id()) {
98+
if (sender_.joinable()) {
99+
sender_.join();
100+
}
101+
} else {
102+
sender_.detach();
103+
}
98104
app_->stop();
99105
}
100106
#endif

examples/response-sample.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
1+
// Copyright (C) 2014-2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
22
// This Source Code Form is subject to the terms of the Mozilla Public
33
// License, v. 2.0. If a copy of the MPL was not distributed with this
44
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -61,7 +61,13 @@ class service_sample {
6161
app_->clear_all_handler();
6262
stop_offer();
6363
condition_.notify_one();
64-
offer_thread_.join();
64+
if (std::this_thread::get_id() != offer_thread_.get_id()) {
65+
if (offer_thread_.joinable()) {
66+
offer_thread_.join();
67+
}
68+
} else {
69+
offer_thread_.detach();
70+
}
6571
app_->stop();
6672
}
6773
#endif

examples/routingmanagerd/routingmanagerd.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2015-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
1+
// Copyright (C) 2015-2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
22
// This Source Code Form is subject to the terms of the Mozilla Public
33
// License, v. 2.0. If a copy of the MPL was not distributed with this
44
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -120,17 +120,31 @@ int routingmanagerd_process(bool _is_quiet) {
120120
if (its_application->is_routing()) {
121121
its_application->start();
122122
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
123-
sighandler_thread.join();
123+
if (std::this_thread::get_id() != sighandler_thread.get_id()) {
124+
if (sighandler_thread.joinable()) {
125+
sighandler_thread.join();
126+
}
127+
} else {
128+
sighandler_thread.detach();
129+
}
124130
#endif
125131
return 0;
126132
}
127133
VSOMEIP_ERROR << "routingmanagerd has not been configured as routing - abort";
128134
}
129135
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
130-
std::unique_lock<std::recursive_mutex> its_lock(sighandler_mutex);
131-
stop_sighandler = true;
132-
sighandler_condition.notify_one();
133-
sighandler_thread.join();
136+
{
137+
std::unique_lock<std::recursive_mutex> its_lock(sighandler_mutex);
138+
stop_sighandler = true;
139+
sighandler_condition.notify_one();
140+
}
141+
if (std::this_thread::get_id() != sighandler_thread.get_id()) {
142+
if (sighandler_thread.joinable()) {
143+
sighandler_thread.join();
144+
}
145+
} else {
146+
sighandler_thread.detach();
147+
}
134148
#endif
135149
return -1;
136150
}

0 commit comments

Comments
 (0)