CommonAPI使用例子-HelloWorld

参考: https://at.projects.genivi.org/wiki/pages/viewpage.action?pageId=5472316
在这里插入图片描述

目录结构 存放文件 解释说明
mkdir project 项目目录
mkdir cgen 存放代码生成器
commonapi-generator
commonapi_someip_generator
mkdir fidl 存放*.fidl+*.fdepl文件
vim HelloWorld.fidl
vim HelloWorld.fdepl
src-gen 执行代码生成器,自动生成的目录,存放代码生成器生成的代码
mkdir src 存放应用程序代码
vim HelloWorldClient.cpp
vim HelloWorldService.cpp
vim HelloWorldStubImpl.hpp
vim HelloWorldStubImpl.cpp
vim CMakeLists.txt 用于cmake编译
mkdir build 用于编译+存放最终生成的可执行文件
cd build
cmake
make

  1. 编写HelloWorld.fidl文件
    例如:
    在这里插入图片描述
    然后执行代码生成器的可执行文件,根据HelloWorld.fidl文件生成CommonAPI级别的代码;生成的代码的存放位置与HelloWorld.fidl此文件的放置位置无关,因为从该文件生成的代码将始终放置在自动创建的src-gen文件夹中。
    在选择版本时,可用通过执行uname -m来查看自己所使用的服务器的版本。
    在这里插入图片描述
    ./cgen/commonapi-generator/commonapi-generator-linux-x86_64 -sk ./fidl/HelloWorld.fidl
    在这里插入图片描述
    HelloWorld.hpp
    HelloWorldProxyBase.hpp
    HelloWorldProxy.hpp
    HelloWorldStub.hpp
    HelloWorldStubDefault.hpp
    HelloWorldStubDefault.cpp

2. 编写HelloWorld.fdepl文件
例如:
在这里插入图片描述

然后执行代码生成器的可执行文件,根据HelloWorld.fdepl文件生成所需的粘合代码。
同上,也是要根据自己的版本执行相应的可执行文件.
./cgen/commonapi_someip_generator/commonapi-someip-generator-linux-x86_64 -ll verbose ./fidl/HelloWorld.fdepl
在这里插入图片描述

HelloWorldSomeIPDeployment.hpp
HelloWorldSomeIPDeployment.cpp
HelloWorldSomeIPProxy.hpp
HelloWorldSomeIPProxy.cpp
HelloWorldSomeIPStubAdapter.hpp
HelloWorldSomeIPStubAdapter.cpp

3. 编写应用程序
在本教程中,我们将创建一个客户端和一个服务,以便能够看到正在进行的通信。
首先通过HelloWorldProxy.cpp在项目中创建新的源文件来实现客户端。确保有一个主要方法来启动客户端应用程序。
(1)在这里,将需要两个包含项才能访问CommonAPI客户端功能:
在这里插入图片描述
请注意,必须始终包含CommonAPI.hpp用于访问CommonAPI和生成的代理的运行时部分。如果定义的接口具有版本号,则可以在接口类的名称空间和目录结构中找到该版本。
每个CommonAPI应用程序要做的第一件事之一就是获取指向运行时对象的指针:
在这里插入图片描述
为了能够与特定服务进行通信,我们需要一个代理:
在这里插入图片描述
此代理将处理哪个存根,由域和实例名称与生成的代理类一起作为模板参数显示确定。
该连接是一个可选参数。此参数允许将多个代理归为一个所谓的连接。如果没有主循环集成,则内部连接对应一个接收器线程。
通过代理的实例化,客户端已建立并可以使用。在此示例中,我们等待服务可用,然后开始发出呼叫:

在这里插入图片描述
(2)服务的实现与客户端大致相同。所需的包括以下内容:
在这里插入图片描述
在服务的主要功能中,要做的第一件事就是获取运行时对象。
在这里插入图片描述
我们必须实例化存根实现(在此处HelloWorldStubImpl),然后注册它:
在这里插入图片描述
生成的存根方法的实现sayHello如下所示:
在这里插入图片描述

(3)完整的代码展示
HelloWorldClient.cpp
在这里插入图片描述
HelloWorldService.cpp
在这里插入图片描述
HelloWorldStruImpl.hpp
在这里插入图片描述
HelloWorldStruImpl.cpp
在这里插入图片描述

4. 编写CMakeLists.txt编译文件
在这里插入图片描述
5. 编写完所有的代码,最后进行编译

在这里插入图片描述
6. 编写vsomeip的.json配置文件
在这里插入图片描述
在这里插入图片描述
7. 设置环境变量并启动服务器与客户端

在这里插入图片描述

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值