概述
服务发现用于定位服务实例并检测服务实例是否正在运行。在车载网络中,服务实例的位置通常是已知的;因此,服务实例的状态是首要关注的。服务的位置(即IP地址、传输协议和端口号)是次要关注的内容。
术语和定义
SOME/IP RPC的术语和定义同样适用于SOME/IP-SD。请参见[第7页上的SIP_RPC_14]。
Offering a service instance 意味着一个ECU实现了一个服务实例,并通过SOME/IP-SD告知其他ECU可以使用它。
Requiring a service instance 意味着向实现所需服务实例的ECU发送SOME/IP-SD消息,表示其他ECU需要此服务实例。即使服务实例尚未运行,也可以发送此消息。
Releasing a service instance 意味着向承载该服务实例的ECU发送一条SOME/IP-SD消息,表示不再需要该服务实例。
本地ECU提供的服务实例的配置和所需数据应称为 Server-Service-Instance-Entry。
其他ECU提供的服务实例的配置和所需数据应称为 Client-Service-Instance-Entry。
-
Server-Service-Instance-Entry 应包括提供该服务的接口的接口标识符。
-
Client-Service-Instance-Entry 应包括服务配置所使用的接口的一个接口标识符。
如果一个服务实例需要在多个接口上提供,应使用多个Server-Service-Instance-Entry 条目。如果一个服务实例需要配置为使用多个不同的接口访问,应使用多个 Client-Service-Instance-Entry 条目。
发布事件组意味着使用SOME/IP-SD消息向其他ECU提供一个服务实例的事件组。订阅事件组意味着使用SOME/IP-SD消息请求一个服务实例的事件组。
SOME/IP-SD ECU-内部接口
服务状态应定义为UP上线或down下线,以及required所需和released已释放:
• 上线的服务状态表示服务实例可用,因此可以使用指定的通信方法访问,并能够完成其指定的功能。
• 下线的服务状态表示与上线的服务状态相反。
• 所需的服务状态表示系统中的另一个软件组件需要该服务实例才能正常运行。
• 已释放的服务状态表示与所需的服务状态相反。
• 上线/下线与所需/已释放的服务状态组合应得到支持。应存在四种不同的有效组合(上线+所需、上线+已释放、下线+所需、下线+已释放)。
服务发现接口应通知本地软件组件远程服务的状态(上线/下线)。服务发现接口应提供选项给本地软件组件,以要求或释放远程服务实例。
服务发现接口应通知本地软件组件有关本地服务的要求/释放状态。服务发现接口应为本地软件组件提供设置本地服务状态(上线/下线)的选项。
事件组状态应按照与服务状态相同的方式进行定义。
服务发现应用于打开/关闭给定事件组的事件。仅当另一个ECU要求该事件组时,才会发送该事件组的事件。(参见订阅事件组)。
服务发现应被告知与其绑定的逻辑、虚拟和物理通信接口的链路上线和链路下线事件。