mirror of
https://github.com/eclipse-openvehicle-api/openvehicle-api.git
synced 2026-07-01 21:25:11 +00:00
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
/********************************************************************************
|
|
* 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 <iostream>
|
|
#include "complex_service.h"
|
|
|
|
|
|
bool CTrunkExampleService::OnInitialize()
|
|
{
|
|
// Request the basic service for speed.
|
|
auto pSpeedSvc = sdv::core::GetObject("Vehicle.Speed_Service").GetInterface<vss::Vehicle::SpeedService::IVSS_GetSpeed>();
|
|
if (pSpeedSvc)
|
|
{
|
|
// Register speed change event handler.
|
|
pSpeedSvc->RegisterOnSignalChangeOfVehicleSpeed(static_cast<vss::Vehicle::SpeedService::IVSS_SetSpeed_Event*> (this));
|
|
}
|
|
|
|
// Request the basic service for opening the trunk
|
|
m_pTrunkSvc = sdv::core::GetObject("Vehicle.Body.Trunk_Service").GetInterface<vss::Vehicle::Body::TrunkService::IVSS_SetOpen>();
|
|
|
|
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<vss::Vehicle::SpeedService::IVSS_GetSpeed>();
|
|
if (pSpeedSvc)
|
|
pSpeedSvc->UnregisterOnSignalChangeOfVehicleSpeed(static_cast<vss::Vehicle::SpeedService::IVSS_SetSpeed_Event*> (this));
|
|
}
|
|
|
|
void CTrunkExampleService::SetSpeed(float value)
|
|
{
|
|
m_Speed = value;
|
|
}
|
|
|
|
bool CTrunkExampleService::PopTrunk()
|
|
{
|
|
if (m_Speed == 0.0)
|
|
{
|
|
return m_pTrunkSvc->SetOpen(true);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|