/******************************************************************************** * Copyright (c) 2025-2026 ZF Friedrichshafen AG * * This program and the accompanying materials are made available under the * terms of the Apache License Version 2.0 which is available at * https://www.apache.org/licenses/LICENSE-2.0 * * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ #include #include "complex_service.h" bool CTrunkExampleService::OnInitialize() { // Request the basic service for speed. auto pSpeedSvc = sdv::core::GetObject("Vehicle.Speed_Service").GetInterface(); if (pSpeedSvc) { // Register speed change event handler. pSpeedSvc->RegisterOnSignalChangeOfVehicleSpeed(static_cast (this)); } // Request the basic service for opening the trunk m_pTrunkSvc = sdv::core::GetObject("Vehicle.Body.Trunk_Service").GetInterface(); if ((!pSpeedSvc) || (!m_pTrunkSvc)) { SDV_LOG_ERROR("Could not get interfaces : [CTrunkExampleService]"); return false; } return true; } void CTrunkExampleService::OnShutdown() { // Unregister trunk change event handler. auto pSpeedSvc = sdv::core::GetObject("Vehicle.Speed_Service").GetInterface(); if (pSpeedSvc) pSpeedSvc->UnregisterOnSignalChangeOfVehicleSpeed(static_cast (this)); } void CTrunkExampleService::SetSpeed(float value) { m_Speed = value; } bool CTrunkExampleService::PopTrunk() { if (m_Speed == 0.0) { return m_pTrunkSvc->SetOpen(true); } return false; }