Сконфигурируйте выделение памяти для адаптивных эксплуатационных данных AUTOSAR

Отправить сервисные данные о событиях, Адаптивная Поддержка платформ AUTOSAR эти методы:

  • Ссылкой — отправить функция использует память в адресном пространстве приложения. После того, как отправление возвращается, приложение может изменить данные о событиях.

  • ara::com выделенная память — запросы приложения ara::com промежуточное программное обеспечение, чтобы выделить память для данных. Этот метод избегает копий данных ara::com промежуточное программное обеспечение и может быть более эффективным для частого, отправляет или большие объемы данных. Но приложение теряет доступ к памяти после того, как отправление возвратится.

Сконфигурировать выделение памяти для события отправляет, откройте редактор Отображений Кода. Выберите вкладку Outports и исследуйте каждый выходной порт. Когда вы выбираете выходной порт, редактор отображается, код приписывают AllocateMemory. Отправить данные о событиях ara::com выделенная память, выберите значение true. Чтобы отправить данные о событиях ссылкой, выберите false.

Если вы устанавливаете AllocateMemory к true, в сгенерированном типовом кодексе C++ соответствующее событие отправляет использованию ara::com выделенный буфер.

void autosar_LaneGuidanceModelClass::step()
{
...
  ara::com::SampleAllocateePtr<company::chassis::provided::skeleton::events::
    rightHazardIndicator::SampleType> *rightHazardIndicatorAllocateePtrRawPtr;
  std::shared_ptr< ara::com::SampleAllocateePtr<company::chassis::provided::
    skeleton::events::rightHazardIndicator::SampleType> >
    rightHazardIndicatorAllocateePtrSharedPtr;
...
  rightHazardIndicatorAllocateePtrSharedPtr = std::make_shared< ara::com::
    SampleAllocateePtr<company::chassis::provided::skeleton::events::
    rightHazardIndicator::SampleType> >
    (ProvidedPort->rightHazardIndicator.Allocate());
  rightHazardIndicatorAllocateePtrRawPtr =
    rightHazardIndicatorAllocateePtrSharedPtr.get();

  // Send: '<S8>/Message Send'
  *rightHazardIndicatorAllocateePtrRawPtr->get() = rtb_Merge1;

  // Send event
  ProvidedPort->rightHazardIndicator.Send(std::move
    (*rightHazardIndicatorAllocateePtrRawPtr));
}

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

Больше о