blob: 10ff54672f92ec5a4deab0aa14a038c6144fc36a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 - 2011 ACIN
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Alois Zoitl - initial API and implementation and/or initial documentation
*******************************************************************************/
#ifndef _ECOSTIMEHA_H_
#define _ECOSTIMEHA_H_
#include <cyg/kernel/kapi.h>
#include "../timerha.h"
#include "forte_thread.h"
/*! \brief External event handler for the eCos Timer.
* \ingroup ECOS-HAL
*
*/
class CECOSTimerHandler : public CTimerHandler, private CThread{
public:
virtual ~CECOSTimerHandler();
/*!\brief Enables this event source
*
*/
virtual void enableHandler(void);
/*!\brief Disable this event source
*/
virtual void disableHandler(void);
/*!\brief Sets the priority of the event source
*
* \param pa_nPriority new priority of the event source
*/
virtual void setPriority(int pa_nPriority);
/*!\brief Get the current priority of the event source
*
* \return current priority
*/
virtual int getPriority(void) const;
private:
static cyg_sem_t m_stSemaphore;
/*!\brief callback function for the system timer
*/
static void timerHandlerFunc(cyg_handle_t , cyg_addrword_t ){
cyg_semaphore_post(&m_stSemaphore);
}
explicit CECOSTimerHandler(CDeviceExecution& pa_poDeviceExecution);
virtual void run(void);
cyg_handle_t m_stAlarmHandle;
cyg_handle_t m_stCounterHandle, m_stSystemclockHandle;
cyg_alarm m_stAlarm;
friend class CTimerHandler;
};
#endif /*_ECOSTIMEHA_H_*/