AUTOSAR Adaptive サービス データのメモリ割り当ての構成
サービス イベント データを送信するため、AUTOSAR Adaptive Platform はこれらの方法をサポートします。
参照による — 関数 send はアプリケーションのアドレス空間内のメモリを使用します。send からの戻りの後、アプリケーションはイベント データを変更できます。
ara::com
で割り当てられたメモリ — データへのメモリの割り当てに、アプリケーションはara::com
ミドルウェアを必要とします。この方法では、ara::com
ミドルウェアによるデータのコピーが行われず、頻繁な送信や大量のデータの場合により効率的である可能性があります。ただし、アプリケーションは send からの戻りの後はメモリにアクセスできなくなります。
イベントの送信のためのメモリ割り当てを構成するには、コード マッピング エディターを開きます。[出力端子] タブを選択して各出力端子を調べます。出力端子を選択すると、エディターにはコード属性 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)); }