/** * @file * * @copyright * @verbatim Copyright @ 2017 Audi Electronics Venture GmbH. All rights reserved. This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. @endverbatim */ #include "periodic_trigger.h" using namespace mapping::rt; PeriodicTrigger::PeriodicTrigger(IMappingEnvironment& oEnv, const std::string& strTriggerName, double fPeriod) : _env(oEnv), _name(strTriggerName), _period(fPeriod), _running(false) { } PeriodicTrigger::~PeriodicTrigger() { _env.unregisterPeriodicTimer((timestamp_t)_period * 1000, this); } a_util::result::Result PeriodicTrigger::create() { return _env.registerPeriodicTimer((timestamp_t)_period * 1000, this); } a_util::result::Result PeriodicTrigger::start() { _running = true; return a_util::result::SUCCESS; } a_util::result::Result PeriodicTrigger::stop() { _running = false; return a_util::result::SUCCESS; } void PeriodicTrigger::onTimer(timestamp_t tmNow) { if (_running) { for(TargetSet::iterator it = _targets.begin(); it != _targets.end(); ++it) { const void* pBuffer = NULL; size_t szBuffer = 0; (*it)->aquireReadLock(); (*it)->updateTriggerFunctionValues(); if (isOk((*it)->getBufferRef(pBuffer, szBuffer))) { _env.sendTarget((handle_t)*it, pBuffer, szBuffer, tmNow); } (*it)->releaseReadLock(); } } }