一、问题 1:服务发布 / 订阅版本不匹配(Handover issue)
问题现象
两个 SOME/IP 协议栈通信失败,核心原因是服务发布(offer_service)、停止发布(stop_offer_service)和订阅(subscribe)时的版本号不匹配。
根因分析
- SOME/IP 协议规定,服务的标识由「服务 ID + 实例 ID + 主版本号(Major) + 次版本号(Minor)」四元组唯一确定;
- 原始代码中:
- 发布服务时未显式指定版本号,使用 VSOMEIP 默认值(修改前默认 Major=0);
- 订阅方也未指定版本号,导致发布 / 订阅的版本号不一致;
- 协议栈在服务发现阶段会校验版本号,不匹配则拒绝建立通信。
// Handover issue, find_service and offer service version mismatch, need code change.
Example:
void offer() {
std::lock_guard<std::mutex> its_lock(notify_mutex_);
- app_->offer_service(SAMPLE_SERVICE_ID, SAMPLE_INSTANCE_ID);
+ app_-&g
订阅专栏 解锁全文
2071

被折叠的 条评论
为什么被折叠?



