目录
3.5.2 在亚状态ETHSM_STATE_OFFLINE中的行为
3.5.3 子状态ETHSM_STATE_WAIT_TRCVLINK中的行为
3.5.4 在亚状态ETHSM_STATE_WAIT_ONLINE中的行为
3.5.5 在亚状态ETHSM_STATE_ONLINE中的行为
3.5.6 在亚状态ETHSM_STATE_WAIT_OFFLINE中的行为
3.5.7 在亚状态ETHSM_STATE_ONHOLD中的行为
一、概述
规范规定了AUTOSAR 基本软件模块以太网状态管理器的功能、API和配置。在AUTOSAR分层软件体系结构中,以太网状态管理器属于ECU抽象层,或者更准确地说,属于通信硬件抽象层。
以太网状态管理器的主要任务可以总结如下:
- 以太网状态管理器应向autosar通信管理器提供一个抽象接口,以启动或关闭以太网集群上的通信。
- 以太网状态管理器不直接访问以太网硬件(以太网通信控制器和以太网收发器),而是通过以太网接口。以太网接口将请求重定向到适当的驱动程序模块。
二、限制与约束
EthSM只能用于以太网通信。它的主要目标是与EthIf一起控制一个或多个底层以太网控制器和以太网收发器驱动程序。不支持以太网(即CAN、LIN或LlexRay)以外的其他协议。
三、功能描述
一个ECU可以有不同的通信网络。每个网络都必须用一个唯一的网络句柄来标识。ComM从网络中请求通信模式。它通过配置知道哪个句柄被分配给什么类型的网络。对于以太网,它使用以太网状态管理器,该管理器负责以太网网络的控制流抽象。
3.1 网络通信模式请求的转换
【规范】EthSM应向ComM提供一个API,ComM可以用来请求以太网网络的通信模式。
【规范】根据此API提交的参数,EthSM应执行相关网络模式状态机的状态转换。
【规范】此转换应将请求转换为相应的API调用,以控制所分配的以太网外围设备。
3.2 当前网络通信方式的输出
网络的当前通信模式可以与请求的模式不同。EthSM必须通过以下两种接口向通信提供当前通信模式的信息:
【规范】EthSM应提供一个API,可由ComM轮询,以获得以太网的当前通信模式。
【规范】EthSM应使用ComM的回调通知来通知ComM通信模式的变化。
3.3 外围设备的控制
3.3.1 以太网接口控制器
一个以太网接口控制器和一个ComM通道属于一个特定的以太网网络(句柄)。
【规范】根据网络模式状态机,EthSM应控制每个以太网网络的以太网接口控制器模式。
【规范】EthSM应使用EthIf的API来控制指定的以太网接口控制器的运行模式。
3.4 多网络
以太网状态管理器应能够处理单独的网络。这涉及单独的物理网络,也涉及同一物理网络上的VLAN。
在这两种情况下,分离都是通过每个物理或虚拟网络的单独句柄来完成的。vlan作为单独的网络出现在更高的层次(ComM)上。E.g.:如果有一个物理以太网接口控制器和分配给它的两个vlan,则存在两个ComM通道。
3.5 网络模式状态机
【规范】EthSM应为每个配置的网络处理器实现一台网络模式状态机(EthSM状态机)。
【规范】EthSM状态机应包括两个主要状态: ETHSM_FULL_COMMUNICATION和ETHSM_NO_COMMUNICATION.
【规范】ETHSM_NO_COMMUNICATION应有3个子状态:ETHSM_STATE_OFFLINE、ETHSM_STATE_WAIT_TRCVLINK和ETHSM_STATE_WAIT_ONLINE。
【规范】ETHSM_FULL_COMMUNICATION应有3个子状态: ETHSM_STATE_ONLINE、ETHSM_STATE_ONHOLD和ETHSM_STATE_WAIT_OFFLINE。
表1显示了根据ComM请求的通信模式,以太网sm子状态的预期状态、受影响的以太网硬件的状态和IP分配。
3.5.1 初始化
【规范】在EthSM初始化后,状态机应会过渡到ETHSM_STATE_OFFLINE。
3.5.2 在亚状态ETHSM_STATE_OFFLINE中的行为
(1)从子状态脱机转换到WAIT_TRCVLINK
【规范】在ETHSM_STATE_OFFLINE状态下,如果ComM为相应的网络句柄请求COMM_FULL_COMMUNICATION或COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST,则状态机将过渡到ETHSM_STATE_WAIT_TRCVLINK。
【规范】从ETHSM_STATE_OFFLINE到ETHSM_STATE_WAIT_TRCVLINK的转换应根据请求的通信模式设置控制器模式:
- -如果通信请求COMM_FULL_COMMUNICATION,则相应EthIfCtrl的控制器模式为ETH_MODE_ACTIVE
- -如果通信请求COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST,则应使用ETH_MODE_ACTIVE_WITH_WAKEUP_REQUEST请求相应的EthIfCtrl的控制器模式
3.5.3 子状态ETHSM_STATE_WAIT_TRCVLINK中的行为
【规范】如果EthSMWakeupSleepOnDatalineEnabled设置为TRUE,EthSM状态机处于ETHSM_STATE_WAIT_TRCVLINK状态,ComM请求现在为COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST,则EthSM应使用ETH_MODE_ACTIVE_WITH_WAKEUP_REQUEST请求相应的EthIfCtrl。
(1)从子状态WAIT_TRCVLINK转换到WAIT_OFFLINE
【规范】在状态ETHSM_STATE_WAIT_TRCVLINK下,如果ComM请求COMM_NO_COMMUNICATION获取相应的网络句柄,则状态机将过渡到ETHSM_STATE_OFFLINE。
【规范】从ETHSM_STATE_WAIT_TRCVLINK到ETHSM_STATE_OFFLINE的转换应将控制器模式设置为ETH_MODE_DOWN。
(2)从子状态WAIT_TRCVLINK转换到WAIT_ONLINE
【规范】在状态ETHSM_STATE_WAIT_TRCVLINK下,如果以太网接口报告了相应的网络句柄的ETHTRCV_LINK_STATE_ACTIVE,则状态机应会过渡到ETHSM_STATE_WAIT_ONLINE。
【规范】从ETHSM_STATE_WAIT_TRCVLINK到ETHSM_STATE_WAIT_ONLINE的转换应从TcpIp模块请求TcpIp状态TCPIP_STATE_ONLINE。
3.5.4 在亚状态ETHSM_STATE_WAIT_ONLINE中的行为
【规范】如果EthSMWakeupSleepOnDatalineEnabled设置为TRUE,且EthSM处于ETHSM_STATE_WAIT_ONLINE状态,ComM请求现在为COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST,则EthSM应使用ETH_MODE_ACTIVE_WITH_WAKEUP_REQUEST请求相应的EthIfCtrl。
(1)从子状态WAIT_ONLINE转换到WAIT_TRCVLINK
【规范】在状态ETHSM_STATE_WAIT_ONLINE下,如果以太网接口报告了相应的网络句柄的ETHTRCV_LINK_STATE_DOWN,则状态机将会过渡到ETHSM_STATE_WAIT_TRCVLINK。
【规范】从ETHSM_STATE_WAIT_ONLINE到ETHSM_STATE_WAIT_TRCVLINK的转换应从TcpIp模块请求TcpIp状态TCPIP_STATE_OFFLINE。
(2)从子状态WAIT_ONLINE转换到OFFONLE
【规范】在状态ETHSM_STATE_WAIT_ONLINE下,如果ComM请求COMM_NO_COMMUNICATION获取对应的网络句柄,则状态机将过渡到ETHSM_STATE_OFFLINE。
【规范】从ETHSM_STATE_WAIT_ONLINE到ETHSM_STATE_OFFLINE的转换会将控制器模式设置为ETH_MODE_DOWN。
【规范】从ETHSM_STATE_WAIT_ONLINE到ETHSM_STATE_OFFLINE的转换应从TcpIp模块请求TcpIp状态TCPIP_STATE_OFFLINE。
(3)从子状态WAIT_ONLINE和ONLINE状态的转换
【规范】在ETHSM_STATE_WAIT_ONLINE状态下,如果TcpIp模块报告了对应的网络句柄的TCPIP_STATE_ONLINE,则状态机应会过渡到ETHSM_STATE_ONLINE。
【规范】从ETHSM_STATE_WAIT_ONLINE成功转换到ETHSM_STATE_ONLINE后,以太网状态管理器将主状态设置为ETHSM_FULL_COMMUNICATION,用通信模式COMM_FULL_COMMUNICATION调用ComM的回调函数ComM_BusSM_ModeIndication。
3.5.5 在亚状态ETHSM_STATE_ONLINE中的行为
【规范】如果EthSM状态机处于ETHSM_STATE_ONLINE状态,EthSMWakeupSleepOnDatalineEnabled被设置为TRUE和ComM请求COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST,则应使用ETH_MODE_ACTIVE_WITH_WAKEUP_REQUEST请求相应的EthIfCtrl的控制器模式。
(1)从子状态ONLINE转换到WAIT_ONLINE
【规范】在ETHSM_STATE_ONLINE状态下,如果TcpIp模块报告了对应的网络句柄的TCPIP_STATE_OFFLINE,则状态机应会过渡到ETHSM_STATE_WAIT_ONLINE。
【规范】从ETHSM_STATE_ONLINE成功转换到ETHSM_STATE_WAIT_ONLINE后,以太网状态管理器将主状态设置为ETHSM_NO_COMMUNICATION,用通信模式COMM_NO_COMMUNICATION调用ComM的回调函数ComM_BusSM_ModeIndication。
(2)从子状态在线过渡到WAIT_OFFLINE
【规范】在状态ETHSM_STATE_ONLINE下,如果ComM请求COMM_NO_COMMUNICATION获取相应的网络句柄,则状态机将过渡到ETHSM_STATE_WAIT_OFFLINE。
【规范】进入状态ETHSM_STATE_WAIT_OFFLINE后,应使用TCPIP_STATE_OFFLINE调用API TcpIp_RequestComMode。
(3)从子状态在线过渡到ONHOLD
【规范】在状态ETHSM_STATE_ONLINE下,如果以太网接口报告了相应的网络句柄的ETHTRCV_LINK_STATE_DOWN,则状态机将会过渡到ETHSM_STATE_ONHOLD。
【规范】从ETHSM_STATE_ONLINE到ETHSM_STATE_ONHOLD的转换应从TcpIp模块请求TcpIp状态TCPIP_STATE_ONHOLD。
【规范】如果存在可选的配置参数ETHSM_E_LINK_DOWN,则在从ETHSM_STATE_ONLINE切换到ETHSM_STATE_ONHOLD时,应将具有事件状态DEM_EVENT_STATUS_FAILED的ETHSM_E_LINK_DOWN报告给DEM模块
3.5.6 在亚状态ETHSM_STATE_WAIT_OFFLINE中的行为
【规范】在状态ETHSM_STATE_WAIT_OFFLINE下,如果ComM请求COMM_NO_COMMUNICATION获取对应的网络句柄,EthSM应用TCPIP_STATE_OFFLINE调用API TcpIp_RequestComMode。
(1)从子状态WAIT_OFFLINE转换到脱机状态
【规范】在状态ETHSM_STATE_WAIT_OFFLINE下,如果TcpIp modul报告了对应的网络句柄的TCPIP_STATE_OFFLINE,则状态机将会过渡到ETHSM_STATE_OFFLINE。
【规范】从ETHSM_STATE_WAIT_OFFLINE到ETHSM_STATE_OFFLINE的转换应将控制器模式设置为ETH_MODE_DOWN。
【规范】从ETHSM_STATE_WAIT_OFFLINE成功转换到ETHSM_STATE_OFFLINE后,以太网状态管理器将主状态设置为ETHSM_NO_COMMUNICATION,用通信模式COMM_NO_COMMUNICATION调用ComM的回调函数ComM_BusSM_ModeIndication。
(2)从子状态WAIT_OFFLINE到在线的转换
【规范】在ETHSM_STATE_WAIT_OFFLINE状态下,如果ComM为相应的网络句柄请求COMM_FULL_COMMUNICATION或COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST,则状态机将过渡到ETHSM_STATE_ONLINE。
【规范】如果ComM请求使用COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST的EthSM状态机,则从ETHSM_STATE_WAIT_OFFLINE到ETHSM_STATE_ONLINE的转换应将控制器模式设置为ETH_MODE_ACTIVE_WITH_WAKEUP_REQUEST。
【规范】如果ComM请求使用COMM_FULL_COMMUNICATION的EthSM状态机,则从ETHSM_STATE_WAIT_OFFLINE到ETHSM_STATE_ONLINE的转换应将控制器模式设置为ETH_MODE_ACTIVE。
【规范】从ETHSM_STATE_WAIT_OFFLINE到ETHSM_STATE_WAIT_ONLINE的转换应从TcpIp模块请求TcpIp状态TCPIP_STATE_ONLINE。
3.5.7 在亚状态ETHSM_STATE_ONHOLD中的行为
【规范】如果EthSM状态机处于ETHSM_STATE_ONHOLD状态,EthSMWakeupSleepOnDatalineEnabled被设置为TRUE和ComM请求COMM_FULL_COMMUNICATION_WITH_WAKEUP_REQUEST,则应使用ETH_MODE_ACTIVE_WITH_WAKEUP_REQUEST请求相应的EthIfCtrl的控制器模式。
(1)从ONHOLD到在线
【规范】在ETHSM_STATE_ONHOLD状态下,如果以太网接口报告了相应的网络句柄的ETHTRCV_LINK_STATE_ACTIVE,则状态机将会过渡到ETHSM_STATE_ONLINE。
【规范】从ETHSM_STATE_ONHOLD到ETHSM_STATE_ONLINE的转换应从TcpIp模块请求TcpIp状态TCPIP_STATE_ONLINE。
【规范】如果存在可选的配置参数ETHSM_E_LINK_DOWN,则在从ETHSM_STATE_ONHOLD切换到ETHSM_STATE_ONLINE时,应将具有事件状态DEM_EVENT_STATUS_PASSED的ETHSM_E_LINK_DOWN报告给DEM模块。
(2)从子状态ONHOLD转换到WAIT_TRCVLINK
【规范】在ETHSM_STATE_ONHOLD状态下,如果TcpIp模块报告了对应的网络句柄的TCPIP_STATE_OFFLINE,则状态机应会过渡到ETHSM_STATE_WAIT_TRCVLINK。
【规范】从ETHSM_STATE_ONHOLD成功转换到E ETHSM_STATE_WAIT_TRCVLINK后,以太网状态管理器将主状态设置为ETHSM_NO_COMMUNICATION,用通信模式COMM_NO_COMMUNICATION调用ComM的回调函数ComM_BusSM_ModeIndication。
(3)从子状态ONHOLD转换到脱机状态
【规范】在状态ETHSM_STATE_ONHOLD下,如果ComM请求COMM_NO_COMMUNICATION获取相应的网络句柄,则状态机将过渡到ETHSM_STATE_OFFLINE。
【规范】从ETHSM_STATE_ONHOLD到ETHSM_STATE_OFFLINE的转换应将控制器模式设置为ETH_MODE_DOWN。
【规范】从ETHSM_STATE_ONHOLD到ETHSM_STATE_OFFLINE的转换应从TcpIp模块请求TcpIp状态TCPIP_STATE_OFFLINE。
【规范】从ETHSM_STATE_ONHOLD成功转换到ETHSM_STATE_OFFLINE后,以太网状态管理器将主状态设置为ETHSM_NO_COMMUNICATION,用通信模式COMM_NO_COMMUNICATION调用ComM的回调函数ComM_BusSM_ModeIndication。
3.5.8 关于状态转换的信息
【规范】当EthSM状态机进入子状态时,EthSM应通过调用BswM_EthSM_CurrentState()向BswM报告已进入的子状态(例如,当进入子状态ETHSM_STATE_ONLINE时,EthSM应调用BswM_EthSM_CurrentState(ETHSM_STATE_ONLINE)。初始化后到ETHSM_STATE_OFFLINE的转换(见[SWS_EthSM_00025])不得向BswM报告。
3.6 错误分类
3.6.1 开发错误
四、API接口
4.1 API定义
- EthSM_Init
- EthSM_GetVersionInfo
- EthSM_RequestComMode
- EthSM_GetCurrentComMode
4.2 回调接口
- EthSM_CtrlModeIndication
- EthSM_TrcvLinkStateChg
- EthSM_TcpIpModeIndication
- EthSM_SleepIndication
4.3 调度接口
- EthSM_MainFunction