【AUTOSAR SOMEIP】SD状态机
SD状态机
Server状态机


Down Phase
Service不可用。即服务端无法提供服务。
Available Phase
Initial Wait Phase
-
服务准备(这个Service依赖的所有组件已经就绪。包括但不限于一些用于数据收集的应用程序,一些硬件传感器等等。只有这些基础数据提供者全部就绪)完成后,进入此阶段;
-
此阶段收到Find Service报文,忽略;
-
若服务不可用,进入DownPhase;
-
此阶段定义了时间参数INITIAL_DELAY_MIN和INITIAL_DELAY_MAX,初始化时间取之间的随机值。超时后,发送第一帧OfferService,标志着进入下一阶段;
Repetition Phase
-
为了让客户端快速找到有哪些Service,此阶段重复发送OfferService,发送次数为REPETITIONS_MAX;发送完成后进入Main Phase;
-
发送间隔以REPETITIONS_BASE_DELAY为起始时间,每发送一次,间隔是时间翻倍;
-
如果收到客户端的FindService,不影响当前阶段的发送计时和计数(OffserService照样发)。延迟一定时间(REQUEST_RESPONSE_DELAY)后,向客户端单播发送OfferService;
-
如果收到SubscribeEventgroup后,发送单播ACK/Nack,启动此订阅Entry的TTL计时器;
-
如果收到StopSubscribeEventgroup后,停止订阅Entry的TTL计时器;
-
如果服务不可用,进入DownPhase,并发送StopOfferService通知所有客户端;
Main Phase
-
此阶段周期发送OfferService,周期为CYCLIC_OFFER_DELAY;
-
如果收到客户端的FindService,不影响发送计时,延迟一定时间(REQUEST_RESPONSE_DELAY)后,向客户端单播发送OfferService;
-
如果收到SubscribeEventgroup后,发送单播Ack/Nack,启动订阅Entry的TTL计时器;
-
如果收到StopSubscribeEventgroup后,停止此订阅Entry的TTL计时器;
-
如果服务不可用,进入DownPhase,并发送StopOfferService;
Client状态机

Down Phase
-
服务未被应用请求;
-
收到OfferService,启动TTL计时器,存储当前服务实例状态。若此服务被应用请求,直接进入MainPhase;
Available Phase
Initial Wait Phase
-
服务被请求后,进入此阶段;
-
等待INITIAL_DELAY时间(最大时间和最小时间之间的随机值);
-
如果收到OfferService,则取消计时器,进入MainPhase;
-
如果服务请求被释放,进入DownPhase;
-
计时器超时后,发送一个FindService,进入下一阶段;

Repetition Phase
-
重复发送FindService,重复发送次数由REPETITIONS_MAX决定;
-
发送间隔以REPETITIONS_BASE_DELAY为基准,每发送一次,间隔加倍;
-
收到OfferService,停止发送计时和计数,立即进入MainPhase。触发发送SubscribeEventgroups;
如果服务请求被释放,进入DownPhase。若有订阅,发送StopSubscribeEventgroup;

Main Phase
- 不再周期发送Find Service;
- 收到Offer Service,触发发送SubscribeEventgroup;
- 如果发送StopOfferService,则停止所有定时器;
- 如果服务请求被释放,进入DownPhase;如有订阅,发送SubscribeEvengtgroup;
