COVESA / vsomeip

An implementation of Scalable service-Oriented MiddlewarE over IP
Mozilla Public License 2.0
1.12k stars 697 forks source link

[BUG]: Compliance issue that offer the same serviceID-instanceID with different major versions is not supported #809

Open zhaoxin39913 opened 4 days ago

zhaoxin39913 commented 4 days ago

vSomeip Version

v3.4.10

Boost Version

1.7.6

Environment

Ubuntu 20.04

Describe the bug

Hi vsomeip experts,

To follow up https://github.com/COVESA/vsomeip/issues/797. I have tested PRS_SOMEIPSD_00512 in SOME/IP SD Spec and confirmed that offering the same serviceID-instanceID with different major versions within the same VLAN is not supported in current vsomeip library.

In my test, I have set up two devices running different vsomeip applications. device A offers service 0x1234/0x5678 with majvor version 0xA, deviceB offers service 0x1234/0x5678 with major version 0xB. After device A has offered the service, next when device B offers the same service with version 0xB, it always reports below error message:

[error] routing_manager_impl::handle_local_offer_service: rejecting service registration. Application: 0201 is trying to offer [1234.5678.11.0] already offered ..

And from the wireshark I confirmed that the service 0x1234/0x5678/0xB is not offered. It seems like a missing feature that vsomeip stack need to support PRS_SOMEIPSD_00512 (Supporting multiple versions of the same service),

Reproduction Steps

100% reproduced.

Expected behaviour

vsomeip stack need to support PRS_SOMEIPSD_00512 (Supporting multiple versions of the same service)

Logs and Screenshots

[error] routing_manager_impl::handle_local_offer_service: rejecting service registration. Application: 0201 is trying to offer [1234.5678.11.0] already offered

KareemLMR commented 2 days ago

Hello, How did you set the major version of the services you offered? Have you set the major version in offer_service API: image

zhaoxin39913 commented 1 day ago

Hi @KareemLMR

Yes, I set the major version in offer_service() API and the minor version keeps the default version: app->offer_service(0x1234, 0x5678, 0xa);