文章目录
-
-
- [5.1.6 通过SOME/IP 和 SOME/IP-SD进行发布/订阅](#5.1.6 通过SOME/IP 和 SOME/IP-SD进行发布/订阅)
-
5.1.6 通过SOME/IP 和 SOME/IP-SD进行发布/订阅
请求/应答方式之外,还有一些情形客户端想从服务端获取一些信息或参数,但并不想每次都去请求。这中情形被叫做"notifications" 、"concern events" 和 "fields"
[PRS_SOMEIPSD_00443]
服务客户端需要"events" "notification events"需要在运行时使用SOME/IP-SD想服务端订阅

[PRS_SOMEIPSD_00446]
通常可以将"客户端收到服务端的Offer Service Entry"作为客户端订阅服务端的时机。
[PRS_SOMEIPSD_00449]
客户端只要还在意"events",""notification events ,就应该在每次收到服务端的Offer Service Entry时使用Subscribe Eventgroup Entry回应。当客户端可以通过消息中的reboot flag确信服务端已经重启了,客户端需要进行与收到"StopOffer Entry"时一样的处理。
[PRS_SOMEIPSD_00862] 基于客户端区分"field notifiers"和"pure events"
区分"field notifiers"和"pure events"应基于客户端的配置。
客户端需要主动请求field notifiers的初始值的原因如下(但不限于以下原因)
- 客户端当前未订阅Eventgroup
- 客户端在最后一个Subscribe Eventgroup Entry之后出现了链接断开/链接建立的情况。
- 客户端在最后一个Subscribe Eventgroup后, 没有收到Subscribe Eventgroup Ack 。
- 客户端发现服务端重启
[PRS_SOMEIPSD_00570]
如果客户端订阅的多个eventgroups中包含相同的events或field notifiers,则服务端不应该向客户端发送重复的通知消息。
本条只适用于常规事件、不适用于发送field notifiers的初始值。
[PRS_SOMEIPSD_00450]
客户端侧发布/订阅链接丢失描述如下:
- 无先前注册 + 客户端订阅
- 服务端:OfferService()
- 客户端:SubscribeEventgroup[Session ID=x, Reboot=0]
- 服务端:updateRegistration()
- 服务端:SubscribeEventgroupAck + Events()
- 客户端连接丢失
- 客户端:linkDown()
- 客户端:deleteEntries()
- 客户端:linkUp()
- 客户端再次注册,发现客户端重启
- 服务端:OfferService()
- 客户端:SubscribeEventgroup[Session ID=1, Reboot=1]
- 服务端:updateRegistration()
- 服务端:SubscribeEventgroupAck + Events()
