Search code examples
c++ubuntutcpudpautomotive

VSOMEIP - Communication between 2 devices (TCP/UDP) Not working


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 DEREGISTERED

Output 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.


Solution

  • 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! :)