0

I am working on Franca IDL and trying to implement the SOME/IP two device communication. I am referring the below links:

  1. https://at.projects.genivi.org/wiki/pages/viewpage.action?pageId=5472320
  2. https://github.com/GENIVI/vsomeip/wiki/vsomeip-in-10-minutes#request

Current Setup:

Ubuntu 18.04 (two machines - Server & Client) Two Machines connected over ethernet

But am actually confused between SOME/IP and VSOME/IP. Anyhow I went with the link [1] I could able to achieve communication between the processes running on the single local machine. I failed in two 2 device communication.

Later I followed the same in in link [2] but even here I was able to achieve communication between the processes running on the single local machine. I failed in two 2 device communication but server was running in one device and client was running on another but no communication achieved.

I came across this VSOMEIP - Communication between 2 devices (TCP/UDP) Not working post here but couldn't get how to proceed further.

My actual aim is to achieve two device communication using Franca IDL and SOME/IP i.e link [1]. But I am not finding any single source so that I can at least look into it.

Any suggestions will help me a lot. Thanks in advance.

siddharthav
  • 41
  • 1
  • 8

2 Answers2

0

After working for few hours now the quick update is, As suggested in the VSOMEIP - Communication between 2 devices (TCP/UDP) Not working I used the shell script now the client and server are detecting each other over ethernet. But the function call is not happening. Client is not sending the request to the server. To be more clear in the given example (https://at.projects.genivi.org/wiki/pages/viewpage.action?pageId=5472320) the on_availability is working but on_message is not working. We are struggling a lot. Any suggestion will help us a lot.

siddharthav
  • 41
  • 1
  • 8
  • did u find a solution. we have a similar issue and cant figure out why some of the methods are called and some are not. – gst Sep 17 '21 at 09:38
0

Client detects the service but doesn't send request maybe because it had sent the message before its availability is checked.

in client cpp,

void on_availability(vsomeip::service_t _service, vsomeip::instance_t _instance, bool _is_available) {
std::cout << "CLIENT: Service ["
        << std::setw(4) << std::setfill('0') << std::hex << _service << "." << _instance
        << "] is "
        << (_is_available ? "available." : "NOT available.")
        << std::endl;
if(_is_available) condition.notify_one();

}

make

condition.notify_one();

to

if(_is_available) condition.notify_one();

referred from https://github.com/COVESA/vsomeip/issues/44

hanmhs9
  • 1
  • 1