主要内容

配置AUTOSAR自适应服务发现模式

AUTOSAR的自适应服务通信提供了选项来配置应用程序来使用一次性或动态发现订阅服务。默认的发现模式,曾经的AUTOSAR应用程序可以找到并初始化订阅服务。这种模式的发现可能要求服务开始前应用程序。你可以改变服务发现模式DynamicDiscovery使AUTOSAR应用程序能够发现和订阅服务可用。

您可以配置您的模型或编程方式,每个需要服务端口的服务发现模式曾经的DynamicDiscovery:

  • 从你的模型,你可以使用AUTOSAR词典打开服务发现属性所需的港口和选择他们的服务发现模式。

    这个例子显示了如何设置一个所需的端口DynamicDiscovery

  • 通过编程,你可以使用从getAUTOSARProperties API函数来配置服务发现模式。

    这个例子显示了如何设置一个所需的端口DynamicDiscovery

    hModel =“autosar_LaneGuidance”;openExample (hModel);apiObj = autosar.api.getAUTOSARProperties (hModel);集(apiObj,“/ LaneGuidance_pkg / LaneGuidance_swc / LaneGuidance / RequiredPort /”,“ServiceDiscoveryMode”,“DynamicDiscovery”)

服务发现模式价值影响生成c++代码(模型中的源代码文件)在以下两个地方:

  • 调用的StartFindServiceAPI和注册的回调(InstanceIdentifierInstanceSpecifier变异)。

    / /模型初始化函数void autosar_LaneGuidanceModelClass:初始化(){ProvidedPort = std:: make_shared <骨骼提供公司::底盘::::::ProvidedInterfaceSkeleton > (ara:: com:: InstanceIdentifier (“2”), ara:: com:: MethodCallProcessingMode:: kPoll);ProvidedPort - > OfferService ();代理公司::底盘:要求::::RequiredInterfaceProxy: StartFindService (std::移动(std::绑定(&autosar_LaneGuidanceModelClass:: RequiredPortSvcHandler, std::占位符::_1,std::占位符::“_2)),ara:: com:: InstanceIdentifier (" 1 "));}
  • 回调函数的定义。

    空白autosar_LaneGuidanceModelClass:: RequiredPortSvcHandler (ara:: com:: ServiceHandleContainer <代理所需的公司::底盘::::::RequiredInterfaceProxy:: HandleType > svcHandles, const ara:: com:: FindServiceHandle fsHandle){如果((! RequiredPort) & & (svcHandles.size () > 0 u)) {RequiredPort = std:: make_shared <代理所需的公司::底盘::::::RequiredInterfaceProxy > (* svcHandles.begin ());RequiredPort - > leftCarInBlindSpot.Subscribe u (1);RequiredPort - > leftLaneDistance.Subscribe u (1);RequiredPort - > leftTurnIndicator.Subscribe u (1);RequiredPort - > rightCarInBlindSpot.Subscribe u (1);RequiredPort - > rightLaneDistance.Subscribe u (1);RequiredPort - > rightTurnIndicator.Subscribe u (1);代理公司::底盘:要求::::RequiredInterfaceProxy: StopFindService (fsHandle);}}

相关的例子

更多关于