Main Content

AUTOSAR Adaptive サービス データのメモリ割り当ての構成

サービス イベント データを送信するため、AUTOSAR Adaptive Platform はこれらの方法をサポートします。

  • 参照による — 関数 send はアプリケーションのアドレス空間内のメモリを使用します。send からの戻りの後、アプリケーションはイベント データを変更できます。

  • ara::com で割り当てられたメモリ — データへのメモリの割り当てに、アプリケーションは ara::com ミドルウェアを必要とします。この方法では、ara::com ミドルウェアによるデータのコピーが行われず、頻繁な送信や大量のデータの場合により効率的である可能性があります。ただし、アプリケーションは send からの戻りの後はメモリにアクセスできなくなります。

イベントの送信のためのメモリ割り当てを構成するには、コード マッピング エディターを開きます。[出力端子] タブを選択して各出力端子を調べます。出力端子を選択すると、エディターにはコード属性 AllocateMemory が表示されます。イベント データを ara::com 割り当てメモリで送信するには値 true を選択します。イベント データを参照によって送信するには false を選択します。

AllocateMemorytrue に設定すると、生成された 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));
}

関連する例

詳細