Otomotiv Middleware
TEKNİK REHBER OTOMOTİV MİDDLEWARE AUTOSAR ADAPTIVE PLATFORM 2026

AUTOSAR Adaptive
POSIX tabanlı dinamik araç yazılım platformu.

Classic AUTOSAR'ın sabit dünyasının ötesinde: OTA güncellemesi, dinamik servis keşfi ve araç sınıfı fonksiyonel güvenlik.

00 AUTOSAR Adaptive nedir — Classic vs Adaptive

AUTOSAR Adaptive Platform, 2017 yılında AUTOSAR konsorsiyumu tarafından yayımlanan ve yüksek hesap gücü gerektiren araç ECU'ları için tasarlanmış yazılım platformu standardıdır.

Classic AUTOSAR'ın Sınırları

AUTOSAR Classic (CP), 2003'te tanımlanmıştır. Deterministik, güvenlik-kritik sistemler için tasarlanmıştır — motor kontrol, fren sistemi, airbag. Ancak şu sınırları vardır:

  • Statik yazılım konfigürasyonu: derleme zamanında her şey sabitlenir
  • OSEK/AUTOSAR OS: gerçek zamanlı, ancak POSIX-uyumlu değil
  • Dynamic deployment yok: yeni servis veya uygulama çalışma sırasında yüklenemez
  • Modern ağ yönetimi (IP, OTA) desteklenmez

Adaptive Platform'un Farkları

POSIX tabanlı OS
Linux, QNX, Integrity veya herhangi bir POSIX uyumlu OS kullanılabilir. Geniş araç ekosistemi desteği.
Dinamik Deployment
Adaptive Application'lar çalışma sırasında başlatılıp durdurulabilir. OTA güncelleme doğal olarak desteklenir.
Servis Odaklı Mimari
ara::com API, SOME/IP üzerinden servis keşfi ve haberleşme sağlar. ECU'lar birbirini dinamik olarak bulur.
C++17 API
Modern C++ standartları: future/promise, std::optional, structured bindings. Geliştirici deneyimi önceliklidir.
ISO 26262 ASIL-B/D
Mixed-criticality sistemler için FuSa desteği. Güvenlik kritik ve kritik olmayan uygulamalar aynı platform üzerinde koşabilir.

Kullanım Senaryoları

  ┌──────────────────────────────────────────────────────────────┐
  │              AUTOSAR Adaptive Kullanım Alanları              │
  ├──────────────────────────────────────────────────────────────┤
  │  ADAS / Otonom Sürüş   │ Sensor fusion, path planning        │
  │  Telematik / OTA       │ OTA update manager, cloud connect   │
  │  V2X Communication     │ ETSI ITS stack, C-V2X               │
  │  HMI / İnfotainment    │ Android Automotive entegrasyonu     │
  │  Domain Controller     │ Zone/domain mimari merkez ECU        │
  └──────────────────────────────────────────────────────────────┘
    
AUTOSAR CLASSIC DEVAM EDIYOR

Adaptive Platform, Classic AUTOSAR'ı değiştirmiyor. Motor kontrol, ABS, airbag gibi hard real-time ve safety-critical uygulamalar Classic AUTOSAR'da kalmaya devam eder. Modern araçlarda her iki platform birlikte kullanılır.

01 Platform mimarisi — Functional Cluster'lar

AUTOSAR Adaptive Platform, Functional Cluster (FC) adı verilen servis kümelerinden oluşur. Her FC belirli bir platform hizmetini standartlaştırır.

  ┌──────────────────────────────────────────────────────────────┐
  │                 Adaptive Application Katmanı                 │
  │         AppA           AppB           AppC                   │
  ├──────────────────────────────────────────────────────────────┤
  │                    ara:: API Katmanı                         │
  ├─────────┬────────┬────────┬────────┬───────────┬───────────┤
  │ara::com │ara::exec│ara::diag│ara::log│ara::crypto│ara::per  │
  │ Comm.   │ Exec.  │ Diag.  │Logging │  Crypto   │ Persist. │
  ├─────────┴────────┴────────┴────────┴───────────┴───────────┤
  │              Adaptive Platform Foundation                    │
  │          POSIX OS  ·  OS Interface  ·  Runtime              │
  ├──────────────────────────────────────────────────────────────┤
  │              Hardware (ECU / SoC / MPU)                     │
  └──────────────────────────────────────────────────────────────┘
    

Temel Functional Cluster'lar

ara::com — Communication Management
SOME/IP binding üzerinden servis keşfi, method çağrısı, event subscribe. proxy/skeleton pattern API'si.
ara::exec — Execution Management
Uygulama yaşam döngüsü: başlatma, çalışma, durdurma. ApplicationReturnType, state machine.
ara::diag — Diagnostics
UDS servisleri için platform desteği. DTC yönetimi, DID okuma/yazma, araç diagnostics entegrasyonu.
ara::log — Logging and Tracing
Araç log altyapısı. DLT (Diagnostic Log and Trace) protokolü. Zaman damgalı, seviyeli loglama.
ara::crypto — Cryptography
Şifreleme, imzalama, hash, anahtar yönetimi. HSM (Hardware Security Module) entegrasyonu.
ara::per — Persistency
Kalıcı depolama. Key-Value store ve File Proxy API'si. Güvenli ECU verisi saklama.
ara::ucm — Update and Config Management
OTA yazılım güncelleme yönetimi. Package processing, rollback desteği.

Machine ve Application Manifest

AUTOSAR Adaptive'de her şey ARXML manifests ile tanımlanır:

  • Machine Manifest: ECU donanım konfigürasyonu, OS parametreleri, network interface'leri
  • Application Manifest: Adaptive Application'ın gerektirdiği servisler, process konfigürasyonu, resource talepleri
  • Service Instance Manifest: SOME/IP binding, port numaraları, timing parametreleri

02 ara::com API — proxy/skeleton pattern

ara::com, service-oriented communication için proxy/skeleton design pattern kullanır. Skeleton servisi sunar (sunucu tarafı), Proxy servisi tüketir (istemci tarafı).

Kavramsal Model

  ┌─────────────────────────────────────────────────────────────┐
  │              ara::com Haberleşme Modeli                     │
  ├──────────────────┬──────────────────────────────────────────┤
  │  Provider (ECU A)│  Consumer (ECU B)                        │
  │                  │                                          │
  │  TemperatureSvc  │  TemperatureProxy                        │
  │  Skeleton        │                                          │
  │  ┌────────────┐  │  ┌────────────────────────────────────┐  │
  │  │ offerService│  │  │ FindService()                      │  │
  │  │ events      │  │  │ GetTemperature() → Future          │  │
  │  │ methods     │  │  │ TemperatureChanged.Subscribe()     │  │
  │  │ fields      │  │  └────────────────────────────────────┘  │
  │  └────────────┘  │                                          │
  └──────────────────┴──────────────────────────────────────────┘
                        SOME/IP Transport
    

Skeleton API (Sunucu Tarafı)

C++17 — Skeleton (servis sağlayıcı)
// ARXML'den araçlarla otomatik oluşturulan Skeleton sınıfı
#include "ara/temperature/temperature_skeleton.h"
#include "ara/exec/execution_client.h"

using namespace ara::temperature;

class TemperatureServiceImpl : public skeleton::TemperatureServiceSkeleton {
public:
    TemperatureServiceImpl(ara::com::InstanceIdentifier id)
        : TemperatureServiceSkeleton(id) {}

    // Method implementasyonu (blocking Future döner)
    ara::core::Future<GetTemperatureOutput> GetTemperature() override {
        ara::core::Promise<GetTemperatureOutput> promise;
        GetTemperatureOutput output;
        output.temperature = read_sensor();    // hw okuma
        output.unit = TemperatureUnit::Celsius;
        promise.set_value(output);
        return promise.get_future();
    }
};

int main() {
    ara::exec::ExecutionClient exec_client;
    exec_client.ReportExecutionState(
        ara::exec::ExecutionState::kRunning);

    // Instance ID manifest'ten gelir
    ara::com::InstanceIdentifier id("1");
    TemperatureServiceImpl svc(id);
    svc.OfferService();

    // Event periyodik gönder
    while (true) {
        TemperatureChanged::SampleType event_data;
        event_data.value = read_sensor();
        svc.TemperatureChanged.Send(event_data);
        std::this_thread::sleep_for(std::chrono::milliseconds(100));
    }
}

Proxy API (İstemci Tarafı)

C++17 — Proxy (servis tüketici)
#include "ara/temperature/temperature_proxy.h"

using namespace ara::temperature::proxy;

int main() {
    // Servis bul — async, handle vector döner
    auto handles = TemperatureServiceProxy::FindService(
        ara::com::InstanceIdentifier::Any);

    if (handles.empty()) {
        std::cerr << "Servis bulunamadı\n";
        return 1;
    }

    // İlk bulunan instance ile proxy oluştur
    TemperatureServiceProxy proxy(handles[0]);

    // Event'e abone ol
    proxy.TemperatureChanged.Subscribe(
        ara::com::EventCacheUpdatePolicy::kLastN, 10);
    proxy.TemperatureChanged.SetReceiveHandler([&]() {
        proxy.TemperatureChanged.GetNewSamples(
            [](ara::com::SamplePtr<TemperatureChanged::SampleType> sample) {
                std::cout << "Event: " << sample->value << " °C\n";
            });
    });

    // Method çağır (async Future)
    auto future = proxy.GetTemperature();
    auto result = future.get();  // blocking wait
    std::cout << "Sıcaklık: " << result.temperature << " °C\n";

    // Event subscription sonlandır
    proxy.TemperatureChanged.Unsubscribe();
    return 0;
}

FindService ve availability callback

C++17 — Dinamik servis izleme
// Servis geldiğinde / gittiğinde bildirim al
TemperatureServiceProxy::StartFindService(
    [](ara::com::ServiceHandleContainer<TemperatureServiceProxy::HandleType> handles,
       ara::com::FindServiceHandle fsh) {
        if (!handles.empty()) {
            std::cout << "Servis aktif\n";
            // proxy oluştur ve kullan
        } else {
            std::cout << "Servis kayboldu\n";
        }
    },
    ara::com::InstanceIdentifier("1"));

03 Servis manifest — ARXML

AUTOSAR Adaptive'deki her servis, ARXML (AUTOSAR XML) formatında tanımlanır. Bu tanım, otomatik kod üretimi (proxy/skeleton) ve SOME/IP binding konfigürasyonu için kullanılır.

ServiceInterface Tanımı

ARXML — TemperatureService ServiceInterface
<SERVICE-INTERFACE>
  <SHORT-NAME>TemperatureService</SHORT-NAME>
  <NAMESPACE-BLOBS>
    <NAMESPACE-BLOB>
      <SHORT-NAME>ara</SHORT-NAME>
      <SHORT-NAME>temperature</SHORT-NAME>
    </NAMESPACE-BLOB>
  </NAMESPACE-BLOBS>

  <!-- Method tanımı -->
  <METHODS>
    <CLIENT-SERVER-OPERATION>
      <SHORT-NAME>GetTemperature</SHORT-NAME>
      <ARGUMENTS></ARGUMENTS>  <!-- input yok -->
      <POSSIBLE-ERROR-REFS></POSSIBLE-ERROR-REFS>
    </CLIENT-SERVER-OPERATION>
  </METHODS>

  <!-- Event tanımı -->
  <EVENTS>
    <VARIABLE-DATA-PROTOTYPE>
      <SHORT-NAME>TemperatureChanged</SHORT-NAME>
      <TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">
        /AUTOSAR/Platform/ImplementationDataTypes/float32
      </TYPE-TREF>
    </VARIABLE-DATA-PROTOTYPE>
  </EVENTS>

  <!-- Field tanımı -->
  <FIELDS>
    <FIELD>
      <SHORT-NAME>CurrentTemperature</SHORT-NAME>
      <HAS-GETTER>true</HAS-GETTER>
      <HAS-SETTER>false</HAS-SETTER>
      <HAS-NOTIFIER>true</HAS-NOTIFIER>
    </FIELD>
  </FIELDS>

</SERVICE-INTERFACE>

Network Binding (SOME/IP)

ARXML — SOME/IP ServiceInstanceToPortPrototypeMappings
<SOMEIP-SERVICE-INTERFACE-DEPLOYMENT>
  <SHORT-NAME>TemperatureService_SOMEIP</SHORT-NAME>
  <SERVICE-INTERFACE-REF>/Services/TemperatureService</SERVICE-INTERFACE-REF>

  <SERVICE-ID>0x1234</SERVICE-ID>

  <METHOD-DEPLOYMENTS>
    <SOMEIP-METHOD-DEPLOYMENT>
      <SHORT-NAME>GetTemperature_Deploy</SHORT-NAME>
      <METHOD-REF>/Services/TemperatureService/GetTemperature</METHOD-REF>
      <METHOD-ID>0x0001</METHOD-ID>
    </SOMEIP-METHOD-DEPLOYMENT>
  </METHOD-DEPLOYMENTS>

  <EVENT-DEPLOYMENTS>
    <SOMEIP-EVENT-DEPLOYMENT>
      <SHORT-NAME>TemperatureChanged_Deploy</SHORT-NAME>
      <EVENT-REF>/Services/TemperatureService/TemperatureChanged</EVENT-REF>
      <EVENT-ID>0x8001</EVENT-ID>
      <TRANSPORT-PROTOCOL>UDP</TRANSPORT-PROTOCOL>
    </SOMEIP-EVENT-DEPLOYMENT>
  </EVENT-DEPLOYMENTS>

</SOMEIP-SERVICE-INTERFACE-DEPLOYMENT>
KOD ÜRETİMİ

ARXML tanımlarından proxy/skeleton C++ sınıfları otomatik üretilir. Araçlar: arxml-generator (açık kaynak), AUTOSAR Builder (Elektrobit), SystemDesk (dSPACE), DaVinci Developer (Vector). OpenAA'da basit bir generator bulunur.

04 Execution Management — ara::exec

ara::exec, Adaptive Application'ların yaşam döngüsünü yönetir. Uygulama başlatılır, çalışır ve durdurulur; her geçiş Execution Management'a raporlanır.

Uygulama Durum Makinesi

         ┌──────────────────────────────────┐
         │  Execution Management (EM)       │
         │  (Platform servisi)              │
         └──────────────────────────────────┘
                      │ spawn process
                      ▼
  ┌──────────┐  kRunning  ┌──────────────┐  kShuttingDown  ┌─────────┐
  │ Initializing│ ──────► │  Running     │ ──────────────► │Terminated│
  └──────────┘           └──────────────┘                  └─────────┘
                              │  kSuspend / kResume
                              ▼
                         ┌──────────┐
                         │ Suspended │
                         └──────────┘
    

ExecutionClient Kullanımı

C++17 — ara::exec ExecutionClient
#include "ara/exec/execution_client.h"
#include <csignal>

static volatile std::atomic<bool> running{true};

void signal_handler(int sig) {
    running = false;
}

int main() {
    std::signal(SIGTERM, signal_handler);

    // Execution Management'e durum bildir
    ara::exec::ExecutionClient exec_client;

    // Başlatma tamamlandı, çalışmaya hazır
    auto result = exec_client.ReportExecutionState(
        ara::exec::ExecutionState::kRunning);

    if (result.HasValue()) {
        // uygulama ana döngüsü
        while (running) {
            do_work();
            std::this_thread::sleep_for(std::chrono::milliseconds(10));
        }
    } else {
        // EM izin vermedi — graceful exit
        return 1;
    }

    // Shutdown başlatıldı — temizle ve çık
    cleanup();
    return 0;
    // Process'in kendiliğinden sonlanması kShuttingDown anlamına gelir
}

Application Manifest (kısmi)

ARXML — AdaptiveApplicationSwComponentType
<ADAPTIVE-APPLICATION-SW-COMPONENT-TYPE>
  <SHORT-NAME>TemperatureSensorApp</SHORT-NAME>

  <PROCESS>
    <SHORT-NAME>TemperatureProcess</SHORT-NAME>
    <EXECUTABLE-REF>/executables/temp_sensor</EXECUTABLE-REF>
    <STARTUP-CONFIGS>
      <STARTUP-CONFIG>
        <ARGUMENTS>--config=/etc/temp_sensor.json</ARGUMENTS>
        <ENVIRONMENT-VARIABLES>
          <ENVIRONMENT-VARIABLE>
            <KEY>VSOMEIP_CONFIGURATION</KEY>
            <VALUE>/etc/vsomeip/temp.json</VALUE>
          </ENVIRONMENT-VARIABLE>
        </ENVIRONMENT-VARIABLES>
      </STARTUP-CONFIG>
    </STARTUP-CONFIGS>
  </PROCESS>

</ADAPTIVE-APPLICATION-SW-COMPONENT-TYPE>

05 Açık kaynak araçlar

AUTOSAR Adaptive gerçek araç projelerinde ticari araçlarla uygulanır, ancak öğrenme ve prototipler için çeşitli açık kaynak araçlar mevcuttur.

OpenAA (Open Adaptive AUTOSAR)

OpenAA, AUTOSAR Adaptive Platform'un açık kaynak referans implementasyonudur. Eclipse Foundation bünyesinde geliştirilmektedir.

bash — OpenAA kurulumu
git clone https://github.com/eclipse-openadaptive/openadaptive.git
cd openadaptive

# Docker ile hızlı başlangıç
docker build -t openaa .
docker run -it openaa bash

# Örnek uygulamayı çalıştır
./examples/hello_adaptive/run.sh

eCAL (enhanced Communication Abstraction Layer)

eCAL, Continental AG tarafından geliştirilen açık kaynak middleware'dir. ara::com benzeri API, SOME/IP ve shared memory transport destekler.

bash — eCAL kurulumu
# Ubuntu/Debian
sudo add-apt-repository ppa:ecal/ecal-latest
sudo apt-get update
sudo apt-get install ecal

# Python bağlantısı
pip install ecal5
Python — eCAL publisher
import ecal.core.core as ecal_core
from ecal.core.publisher import StringPublisher
import time, json

ecal_core.initialize([], "temperature_sensor")

pub = StringPublisher("temperature/engine")

while ecal_core.ok():
    data = json.dumps({"temperature": 85.5, "unit": "Celsius"})
    pub.send(data)
    time.sleep(0.1)

ecal_core.finalize()

Diğer Açık Kaynak Araçlar

ara-api (COVESA)
AUTOSAR Adaptive API header-only kütüphanesi. ara::core, ara::com başlık dosyaları. Gerçek implementasyon OEM/supplier'a bırakılır.
vsomeip
ara::com SOME/IP binding'in açık kaynak implementasyonu. Bu rehberde kapsamlı ele alındı (bkz. SOME/IP rehberi).
DLT-daemon
ara::log için Diagnostic Log and Trace arka plan servisi. GENIVI tarafından geliştirilmiş, araç log altyapısı standardı.
ara-iam (Identity and Access Management)
ara::crypto ve güvenlik policy yönetimi için açık kaynak referans.

06 Geliştirme ortamı kurulumu

Ubuntu 22.04 üzerinde minimal bir AUTOSAR Adaptive geliştirme ortamı kur: CMake, C++17, vsomeip ve örnek uygulama.

Bağımlılıklar

bash
# Temel build araçları
sudo apt-get install -y \
    build-essential cmake ninja-build \
    libboost-all-dev libssl-dev \
    git python3 python3-pip

# C++17 derleyicisi (GCC 11+)
g++ --version   # >= 11 olmalı

# vsomeip (SOME/IP binding için)
git clone https://github.com/COVESA/vsomeip.git
cd vsomeip && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc) && sudo make install

# DLT daemon (ara::log için)
sudo apt-get install -y dlt-daemon dlt-tools

CMakeLists.txt yapısı

CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(adaptive_app CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Bağımlılıklar
find_package(Boost REQUIRED COMPONENTS system thread log)
find_package(vsomeip3 REQUIRED)

# Uygulama
add_executable(temperature_server
    src/temperature_server.cpp
    src/temperature_skeleton.cpp)

target_include_directories(temperature_server PRIVATE
    ${CMAKE_SOURCE_DIR}/include
    ${vsomeip3_INCLUDE_DIRS})

target_link_libraries(temperature_server
    vsomeip3
    Boost::system Boost::thread Boost::log
    pthread)

Adaptive Daemon kavramı

Gerçek bir AUTOSAR Adaptive sistemde şu servisler arka planda çalışır:

bash — Adaptive Platform servisleri (üretime yakın ortam)
# vsomeip routing manager (ara::com altyapısı)
VSOMEIP_CONFIGURATION=/etc/vsomeip/routing.json \
    vsomeipd &

# DLT daemon (ara::log altyapısı)
dlt-daemon -c /etc/dlt.conf &

# Execution Manager (simüle edilmiş — gerçekte platform sağlar)
# Adaptive Application'ları systemd veya EM başlatır
systemctl start adaptive-execution-manager

# Uygulama başlat
VSOMEIP_CONFIGURATION=/etc/vsomeip/temp.json \
    ./temperature_server &

# Log izle
dlt-receive -a localhost

07 Fonksiyonel güvenlik — ISO 26262

AUTOSAR Adaptive, ISO 26262 Fonksiyonel Güvenlik standardıyla uyumlu şekilde tasarlanmıştır. ASIL (Automotive Safety Integrity Level) ayrıştırma, mixed-criticality ve FuSa mimari.

ISO 26262 + AUTOSAR Adaptive

ASIL-A/B (Adaptive Uygulama)
ADAS, infotainment gibi uygulamalar ASIL-B seviyesinde çalışabilir. Failure Mode Effects Analysis (FMEA) gerektirir.
ASIL-D (Platform Çekirdeği)
Execution Management, Communication Management gibi platform servisleri ASIL-D sertifikasyonu alabilir.
SEooC (Safety Element out of Context)
AUTOSAR Adaptive Platform bileşenleri SEooC olarak geliştirilir. OEM bu bileşeni kendi araç sistemine entegre ederek FuSa kanıtını tamamlar.
ASIL Decomposition
Tek bir ASIL-D gereksinim, iki ASIL-B bağımsız kanala bölünebilir. Adaptive Platform bu ayrıştırmayı process isolation ile destekler.

Mixed-Criticality Mimari

  ┌────────────────────────────────────────────────────────────┐
  │                  Adaptive ECU (SoC)                        │
  ├─────────────────────┬──────────────────────────────────────┤
  │  ASIL-D Partition   │  QM / ASIL-A Partition               │
  │  ────────────────   │  ─────────────────────               │
  │  EM (Execution Mgr) │  Navigation App                      │
  │  ara::com core      │  Telematik App                       │
  │  Safety Monitor     │  OTA Manager                         │
  │                     │                                      │
  │  Hypervisor / POSIX Process Isolation                       │
  └─────────────────────┴──────────────────────────────────────┘
    

SafetyArchitect Araçları

AUTOSAR Safety Architect
Elektrobit SafetyDesk: AUTOSAR Adaptive için FuSa analiz araçları. FMEA, FTA, ASIL allocation.
OpenMBEE / SysML
Açık kaynak model tabanlı güvenlik analizi. EAST-ADL ile AUTOSAR entegrasyonu.
MISRA C++:2023
Adaptive uygulamalar için C++ kodlama kuralları. AUTOSAR C++14/17 Guidelines bu kuralları referans alır.
ISO 26262 SERTİFİKASYONU

Gerçek araç ürününde ISO 26262 sertifikasyonu, bağımsız güvenlik değerlendirme kuruluşu (TÜV, Bureau Veritas vb.) onayını gerektirir. AUTOSAR Adaptive'i kullanan OEM/Tier1, her bileşen için güvenlik kanıtını (Safety Case) dokümante etmelidir.

08 Pratik: SOME/IP event haberleşmesi

İki Adaptive Application arasında SOME/IP üzerinden event haberleşmesi kur: basit bir sensör uygulaması, dashboard uygulamasına periyodik veri gönderir.

Senaryo

  ┌────────────────────┐  SOME/IP Event (0x8001)  ┌─────────────────┐
  │  SpeedSensor App   │ ─────────────────────────► │  Dashboard App  │
  │  (Skeleton)        │  ara::com / vsomeip        │  (Proxy)        │
  │  Service: 0x5100   │                            │                 │
  │  Instance: 0x0001  │                            │                 │
  └────────────────────┘                            └─────────────────┘
    

Proje yapısı

Dizin yapısı
speed_demo/
├── CMakeLists.txt
├── include/
│   ├── speed_service_skeleton.h   # ARXML'den üretilmiş
│   └── speed_service_proxy.h      # ARXML'den üretilmiş
├── src/
│   ├── speed_sensor_server.cpp    # Sensör (Skeleton)
│   └── dashboard_client.cpp      # Dashboard (Proxy)
└── config/
    ├── sensor-vsomeip.json        # vsomeip konfigürasyonu
    └── dashboard-vsomeip.json

Sensör uygulaması (kısaltılmış)

C++ — speed_sensor_server.cpp
#include "speed_service_skeleton.h"
#include <vsomeip/vsomeip.hpp>

static const vsomeip::service_t  SVC  = 0x5100;
static const vsomeip::instance_t INST = 0x0001;
static const vsomeip::event_t    EVT  = 0x8001;
static const vsomeip::eventgroup_t EG  = 0x0001;

int main() {
    auto app = vsomeip::runtime::get()->create_application("SpeedSensor");
    app->init();

    std::set<vsomeip::eventgroup_t> groups = { EG };
    app->offer_event(SVC, INST, EVT, groups,
        vsomeip::event_type_e::ET_FIELD);
    app->offer_service(SVC, INST);

    float speed = 0.0f;
    std::thread sensor_thread([&]() {
        while (true) {
            speed = simulate_speed_sensor();
            auto pl = vsomeip::runtime::get()->create_payload();
            std::vector<uint8_t> data(sizeof(float));
            std::memcpy(data.data(), &speed, sizeof(float));
            pl->set_data(data);
            app->notify(SVC, INST, EVT, pl);
            std::this_thread::sleep_for(std::chrono::milliseconds(50));
        }
    });

    app->start();
    sensor_thread.join();
}

Manifest yazma ve çalıştırma

bash
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make -j4

# Terminal 1 — Sensör başlat
VSOMEIP_CONFIGURATION=../config/sensor-vsomeip.json \
    ./speed_sensor_server

# Terminal 2 — Dashboard başlat
VSOMEIP_CONFIGURATION=../config/dashboard-vsomeip.json \
    ./dashboard_client

# Beklenen dashboard çıktısı:
# [ara::com] SpeedService bulundu: 0x5100/0x0001
# Hız: 0.0 km/h
# Hız: 12.5 km/h
# Hız: 25.0 km/h
# ...
SONRAKİ ADIMLAR

Bu örneği genişletmek için: SOME/IP-SD konfigürasyonunu özelleştir (bkz. SOME/IP rehberi), UDS tanılama servisi ekle (bkz. UDS rehberi), VSS sinyal ağacına bağla (bkz. VSS rehberi).