Following the VSOMEIP tutorial Vsomeip in 10 minutes everything works up to the point of Communication between 2 devices.
Current Setup:
- Ubuntu 16.04 (two machines - Server & Client)
- Two Machines connected over ethernet
Files used:
- server.cpp
- client.cpp
- client_config.json
- server_config.json
Output of Server
[info] Parsed vsomeip configuration in 1ms [info] Using configuration file: "../clie_prop.json". [info] Default configuration module loaded. [info] Initializing vsomeip application "Hello". [info] SOME/IP client identifier configured. Using 0033 (was: 1313) [info] Instantiating routing manager [Proxy]. [info] Client [33] is connecting to [0] at /tmp/vsomeip-0 [info] Listening at /tmp/vsomeip-33 [info] Application(Hello, 33) is initialized (11, 100). [info] Starting vsomeip application "Hello" using 2 threads [warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111) [info] io thread id from application: 0033 (Hello) is: 7f80f5cd88c0 TID: 1497 [info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED [info] io thread id from application: 0033 (Hello) is: 7f80f15e7700 TID: 1501 [info] shutdown thread id from application: 0033 (Hello) is: 7f80f1de8700 TID: 1500 [info] main dispatch thread id from application: 0033 (Hello) is: 7f80f25e9700 TID: 1499 [warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111) [info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED [warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111) [info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED [warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111) [info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED [warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111) [info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED [warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111) [info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTEREDOutput of Client
[info] Parsed vsomeip configuration in 0ms [info] Using configuration file: "../serv_prop.json". [info] Default configuration module loaded. [info] Initializing vsomeip application "World". [warning] Routing Manager seems to be inactive. Taking over... [info] SOME/IP client identifier configured. Using 1212 (was: 1212) [info] Instantiating routing manager [Host]. [info] init_routing_endpoint Routing endpoint at /tmp/vsomeip-0 [info] Client [1212] is connecting to [0] at /tmp/vsomeip-0 [info] Service Discovery enabled. Trying to load module. [info] Service Discovery module loaded. [info] Application(World, 1212) is initialized (11, 100). [info] OFFER(1212): [1234.5678:0.0] [info] Starting vsomeip application "World" using 2 threads [info] Watchdog is disabled! [info] io thread id from application: 1212 (World) is: 7fa68723d8c0 TID: 5370 [info] Network interface "enp0s3" state changed: up [info] vSomeIP 2.10.21 | (default) [info] Sent READY to systemd watchdog [info] io thread id from application: 1212 (World) is: 7fa6828f3700 TID: 5374 [info] shutdown thread id from application: 1212 (World) is: 7fa6838f5700 TID: 5372 [info] main dispatch thread id from application: 1212 (World) is: 7fa6840f6700 TID: 5371 [warning] Releasing client identifier 0003. Its corresponding application went offline while no routing manager was running. [info] Application/Client 0003 is deregistering.All the code used is the same as the code used in Request/Response in the vsomeip tutorial. The config files are the same as the config file specified in the communication between 2 devices section with the IP Addresses changed to match my machine addresses.
Any help would be greatly appreciated, thanks.
2 Answers
I found a solution!!
If you navigate to the /build/examples folder in the vsomeip or vsomeip-master directory, you will find executables (response-sample, subscribe-sample, etc.). If you run them in such a way that they use the same configuration files as used in the vsomeip in 10 mintutes (changing unicast addresses, etc.) it should work perfectly. This is the configuration file I used.
{ "unicast" : "192.168.43.6", "logging" : { "level" : "debug", "console" : "true", "file" : { "enable" : "false", "path" : "/tmp/vsomeip.log" }, "dlt" : "false" }, "applications" : [ { "name" : "World", "id" : "0x1212" } ], "services" : [ { "service" : "0x1234", "instance" : "0x5678", "unreliable" : "30509" } ], "routing" : "World", "service-discovery" : { "enable" : "true", "multicast" : "224.224.224.245", "port" : "30490", "protocol" : "udp", "initial_delay_min" : "10", "initial_delay_max" : "100", "repetitions_base_delay" : "200", "repetitions_max" : "3", "ttl" : "3", "cyclic_offer_delay" : "2000", "request_response_delay" : "1500" } }I used shell script to do this.
#!/bin/bash route add -host 224.224.224.245 dev <interface> export VSOMEIP_CONFIGURATION=<config_file> export VSOMEIP_APPLICATION_NAME=<application_name> ./<executable>It did for me anyways! Hope this helps! :)
To clarify Rob Crowley's answer, I got it working using the two unique .json configuration files included in the "vsomeip in 10 minutes" tutorial. I used the "World" configuration on the host offering the service and the "Hello" configuration file on the host running the client. The only thing I need to modify in these files was the "unicast" address. I changed that to match the IP address of the respective hosts.
I also modified the script to use "sudo" before the "route add -host" command, as I found it wouldn't actually add the route without it.
I called make in the "vsomeip/build/examples/" folder to build the examples. The I pointed to on the script for the service service was "notify-sample" executable (vsomeip/build/examples/). The I pointed to on the script for the service service was "subscribe-sample" executable (vsomeip/build/examples/).
This combination worked for me after connecting my two hosts via ethernet and ensuring their IP addresses matched those in the "unicast" field of their respective configuration files.