exponenta event banner

Настройка идентификации экземпляра адаптивной службы AUTOSAR

Можно настроить идентификацию экземпляра службы для требуемых и предоставленных портов в адаптивном компоненте AUTOSAR. При построении адаптивной модели компонентов программного обеспечения:

  • Экспортированные файлы ARXML содержат файл манифеста экземпляра службы, описывающий сопоставление экземпляра «порт-служба».

  • Созданный код C++ использует сконфигурированные сведения об экземпляре службы в ara::com вызовы функций.

Для настройки идентификации экземпляра службы:

  1. Откройте словарь AUTOSAR и выберите Параметры XML. Задайте параметр XML Идентификация экземпляра службы с помощью, чтобы указать форму, в которой нужно создать сведения об экземпляре службы. Выбрать InstanceIdentifier или InstanceSpecifier. Выбранная форма используется для идентификации экземпляров службы в созданных функциях прокси и скелета.

  2. Перейдите к требуемым портам и предоставленным ракурсам портов в словаре. Выберите каждый из перечисленных портов для отображения атрибутов манифеста. Для каждого порта на основе формы экземпляра службы, выбранной в параметрах XML, проверьте значение для параметра «Спецификатор экземпляра» или «Идентификатор экземпляра». Можно ввести значение или принять существующее значение.

При построении модели создается файл манифеста экземпляра службы model_ServiceInstanceManifest.arxml. Файл манифеста описывает развертывание интерфейса службы, сопоставление экземпляра службы с портом и интерфейсы службы для адаптивного компонента.

В сгенерированном коде C++ ara::com вызовы функций используют сконфигурированную информацию об экземпляре услуги. Например, если выбран InstanceIdentifier форма и установите для идентификатора экземпляра значение 1 для требуемого порта, сгенерированные вызовы функции используют эту конфигурацию.

// Model initialize function
void autosar_LaneGuidanceModelClass::initialize()
{
  {
    ara::com::ServiceHandleContainer< company::chassis::required::proxy::
      RequiredInterfaceProxy::HandleType > handles;
    handles = company::chassis::required::proxy::RequiredInterfaceProxy::
      FindService(ara::com::InstanceIdentifier("1"));
...

Связанные примеры

Подробнее