1someip基础知识

关于SOME/IP的理解_AgingMoon的博客-CSDN博客_someip

2.vsomeip 安装使用

[someip专题]vsomeip使用以及代码解析1_AgingMoon的博客-CSDN博客

3.hello world代码解析

代码下载,大家请参考 ,以下则直接说明每个文件,每个函数,作用,共同记录学习GitHub - COVESA/vsomeip: An implementation of Scalable service-Oriented MiddlewarE over IP

hello world这个案例,主要演示客户端向服务端发送一个请求,服务端接收到请求后,在后面追加一个 "hello",客户端接收到响应后,打印响应的消息 “”hello world“”

3.1 hello_world_client_main.cpp

该文件核心是 创建了一个main的进程,main进程中主要初始化了 一个 hello_world_client的对象,并针对该对象初始化,和运行,那么接下来,核心是查看 hello_world_client这个类做了些啥。

int main(int argc, char **argv)
{(void)argc;(void)argv;hello_world_client hw_cl;
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLINGhw_cl_ptr = &hw_cl;signal(SIGINT, handle_signal);signal(SIGTERM, handle_signal);
#endifif (hw_cl.init()) {hw_cl.start();return 0;} else {return 1;}
}

3.2 hello_world_client.hpp

文件中构建了一个客户端的类,该客户端的someip 协议信息如下

  • service_id = 0x1111
  • service_instance_id =0x2222
  • service_method_id = 0x3333

构造函数

构造函数中通过vSomeIP协议栈中的runtime,创建了一个应用,针对vSomeIP详细内容,在后续文章中解析,此处我们进一步说明客户端类的做法。

初始化函数

主要做了四件事,应用初始化,注册状态回调函数,注册消息响应回调函数,注册服务可用回调函数。

  • 应用初始化:主要加载启动时指定的配置文件,加载对应的插件库,初始化routing配置
  • 注册状态回调函数:主要用于服务在routing中注册成功后的操作;
  • 注册消息响应回调函数:用于处理从服务端发来的消息响应;
  • 服务可用回调函数:service端在offer server操作成功后,通知client端,最终就调用到了这个函数。

启动函数

启动对应的线程,包括主线程 io线程 maindispatch线程s top_thread线程 Routing线程

状态处理函数

客户端在runtime中被成功注册后,则请求服务;

可用回调函数

客户端识别到 相关服务可用,则会向服务端发送 “”world” 字符串给 服务端

消息回调函数

客户端接收到服务端的响应后,获取接收的消息,并打印 “Received: ”内容,同时结束

结束函数

针对的初始化阶段的操作进行类似于卸载的工作,首先是stop_offer_service,然后unregister我们初始化注册的message_handler和state_handler.

3.3 hello_world_service_main.cpp

和客户端一样,服务端的主函数中,主要申请了一个hello_world_service 对象,同时进行初始化启动。

3.4 hello_world_service.hpp

同样,服务端的类中,也申请了一个someip协议内容相同的类

  • service_id = 0x1111
  • service_instance_id =0x2222
  • service_method_id = 0x3333

构造函数

构造函数也是通过runtime 创建了一个app对象

初始化函数

主要进行应用初始化,注册消息回调,注册状态回调

消息回调函数

接收到客户端的请求后,追加“hello”字符串,并将消息发送给客户端,同时结束应用。

状态回调函数

在runtime注册成功后,服务端开始对外提供服务。

停止函数

主要是等待消息发送后,通知结束,进行服务提供的体制,以及一些反注册操作。

接下来,进一步解析说明使用到的 runtime application 消息的发送和请求,服务的提供和终止等操作。

[someip专题]vsomeip代码解析2相关推荐

  1. [someip专题]vsomeip使用以及代码解析1

    目录 1. someip基础知识 2.vsomeip 准备工作 2.1 vsomeip 源码下载 2.2 依赖项下载 3.vsomeip 编译 4. vsomeip helloworld使用 本文在l ...

  2. java获取object属性值_java反射获取一个object属性值代码解析

    有些时候你明明知道这个object里面是什么,但是因为种种原因,你不能将它转化成一个对象,只是想单纯地提取出这个object里的一些东西,这个时候就需要用反射了. 假如你这个类是这样的: privat ...

  3. python断言assert实例_Python断言assert的用法代码解析

    在开发一个程序时候,与其让它运行时崩溃,不如在它出现错误条件时就崩溃(返回错误).这时候断言assert 就显得非常有用. python assert断言是声明布尔值必须为真的判定,如果发生异常就说明 ...

  4. java中怎么实现指数幂,java中幂指数值的运算代码解析

    说到幂指数的运算我们就会用到Math.pow(doublea,doubleb),返回的结果是a的b次方. 在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算.非常方便. 但是,已知 ...

  5. java怎么计算幂函数,java中幂指数值的运算代码解析

    说到幂指数的运算我们就会用到Math.pow(doublea,doubleb),返回的结果是a的b次方. 在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算.非常方便. 但是,已知 ...

  6. 冒泡排序(超详细图解加代码解析,5分钟看懂)

    目录 1.冒泡排序的定义 2.冒泡排序的原理 3.代码及其解析 4.冒泡排序的改进 5.实现冒泡排序函数 生命中永远会有令人懊恼的事,但我知道,我们是为了不留遗憾活着的,对吗? 1.冒泡排序的定义 冒 ...

  7. 【阿尼亚喜欢BigData】“红亚杯”Python编程专题赛——满分解析③

    大家好,喜欢Bigdata的阿尼亚来了!希望大家会喜欢阿尼亚的文章!!哇酷哇酷!!! 本次为师傅们带来的是"红亚杯"Python编程专题赛--满分解析系列的第③期,是"P ...

  8. 【阿尼亚喜欢BigData】“红亚杯”Python编程专题赛——满分解析⑤

    大家好,喜欢Bigdata的阿尼亚来了!希望大家会喜欢阿尼亚的文章!!哇酷哇酷!!! 本次为师傅们带来的是"红亚杯"Python编程专题赛--满分解析系列的第⑤期,是"P ...

  9. python中sort函数源代码_Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

最新文章

  1. 在CGD中快速实现多线程的并发控制
  2. 表单验证AngularJs
  3. 温故知新(8)——备忘录模式
  4. win32汇编指令汇总
  5. 用户控件 自定义控件_新的自定义控件:TaskProgressView
  6. C/C 宏替换详解
  7. 百度页面的html5结构,HTML5+CSS3网站设计基础教程
  8. php和dart交互,Flutter 之和原生交互
  9. 微信小程序之点餐系统附源码
  10. 大连芒果云计算机,芒果网manGO怎么样
  11. 微信公众号群发接口和原创校验
  12. pli测试50题题库_面试人员情商测试50题1
  13. 前端经典面试题(持续更新)
  14. 科普|2022软交换设备测试项目,交换机进网认证、CTA认证
  15. phpmail通过qq发邮箱失败_请问phpmailer发送Gmail总是失败是什么原因,qq邮件可以发送出去...
  16. 蓝牙(BlueTooth)技术标准
  17. 安装VS2015卡在创建系统还原点
  18. Mkz-Cloud 部署之路
  19. int 和 Integer有什么区别,Integer 有哪些函数方法
  20. Nessus Host Discovery

热门文章

  1. kibana4 Scripted fields字段单位转换功能
  2. 引用和指针傻傻分不清
  3. CSU 1505 酷酷的单词
  4. 红蓝攻防对抗中需要掌握的网络安全技术汇总
  5. 数据库-超码、候选码、主码
  6. 智能车学习日记【二】————十字和斜入十字
  7. 2018 这一年似乎我不再是了程序员了
  8. 【Flask教程】Flask开发基础与入门
  9. 记录我的第一个简单微信小程序——分辨颜色(测眼力)
  10. BC66 GTW likes gt