blob: 50448cc431ce37715cee675a52da8c184d798c9d [file] [log] [blame]
/************************************************************************************
* Copyright (c) 2016 fortiss GmbH
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Milan Vathoopan, Guru Chandrasekhara - initial API and implementation and/or initial documentation
************************************************************************************/
#include "../../core/devexec.h"
#include "fortenew.h"
#include "freertostiha.h"
CTimerHandler* CTimerHandler::createTimerHandler(CDeviceExecution& paDeviceExecution) {
return new CFreeRTOSTimerHandler(paDeviceExecution);
}
CFreeRTOSTimerHandler::CFreeRTOSTimerHandler(CDeviceExecution& paDeviceExecution) :
CTimerHandler(paDeviceExecution) {
mTimer = xTimerCreate("FORTETimer", pdMS_TO_TICKS(1000 / getTicksPerSecond()), pdTRUE, (void *) this, vCallbackFunction);
}
CFreeRTOSTimerHandler::~CFreeRTOSTimerHandler() {
disableHandler();
xTimerDelete(mTimer, 0);
}
void CFreeRTOSTimerHandler::enableHandler(void) {
xTimerStart(mTimer, 0);
}
void CFreeRTOSTimerHandler::disableHandler(void) {
xTimerStop(mTimer, 0);
}
void CFreeRTOSTimerHandler::setPriority(int paPriority) {
}
int CFreeRTOSTimerHandler::getPriority(void) const {
return 1;
}
void CFreeRTOSTimerHandler::vCallbackFunction(TimerHandle_t paTimer) {
static_cast<CFreeRTOSTimerHandler*>(pvTimerGetTimerID(paTimer))->nextTick();
}