模式间的关系
一个系统在不同级别的颗粒度上包含众多模式,如下图所示,包含车辆模式,应用模式,ECU本地BSW模式。这些模式会互相作用/影响。

他们之间可以有这些相互作用:
在不同的车辆模式下,应用可能处于不同的应用模式(比如是否处于激活状态)
反过来,某些应用的操作状态可能会触发车辆模式的改变
在不同的车辆和应用模式下,BSW模式也可能会变化。比如应用对于通信的需求,可能触发某一路通信网络BSW模式的变化
与此同时,BSW模式变化同样可能影响应用模式或者车辆模式,例如通信网络不可用时,依赖于此通信网络工作的应用可能需要进入limp-home模式
模式请求的处理
车辆模式管理的出发点,既是分发并仲裁模式请求,根据结果来控制BSW。
因此,也就是说,对于每一个OS-Application,都需要有一个模式管理者为本地模式使用者来切换模式,控制BSW。当然,可以拥有多个模式管理者来切换不同的模式。
模式请求是一个“普通的”S/R通信,而模式切换则是一个本地服务。
如上图,模式请求方向不同的模式管理这请求模式切换,模式管理者通知模式使用者此模式切换。
车辆与应用模式管理
这个功能的主要部分由BswM模块处理。
模式请求的分发由RTE执行,RTE同时也要实现模式切换的处理。

例如,对于车辆模式,模式请求一般来自于一个统一模式请求者SWC,不同ECU的BswM都会收到这个请求。
运行在不同OS-Application的BswM可以通过SchM进行S/R通信传递模式请求。
模式处理周期
模式请求方SWC通过S-Port请求模式,RTE分发此请求,BswM通过R-Port接收此请求。
BswM根据设定的规则进行判断,如果满足规则满足触发条件,则执行对应的Action List。
执行Action List时,BswM可能会触发RTE调用模式切换接口作为最后的Action,通知模式使用者仲裁结果。
任一SWC,尤其是模式请求这,可以注册以接收此模式切换通知。
模式请求既可以来自于本地,也可以来自于其他ECU/OS-Application.
需要注意的是,模式请求方只能接受来自于本地BswM的模式切换通知。

往期回顾