blob: 51375cf2fc7b498045569cd45f5453f55a9aa667 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 - 2014 Profactor GmbH, ACIN, fortiss GmbH
* 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:
* Thomas Strasser, Alois Zoitl, Gerhard Ebenhofer
* - initial implementation and rework communication infrastructure
*******************************************************************************/
#ifndef _ESFB_H_
#define _ESFB_H_
#include "funcbloc.h"
/*!\ingroup CORE\brief Base-Class for all event sources.
*/
class CEventSourceFB : public CFunctionBlock{
private:
/* \brief the event chain executor used by this ES.
*/
CEventChainExecutionThread *m_poEventChainExecutor;
SEventEntry mEventSourceEventEntry; //! the event entry to start the event chain
public:
CEventSourceFB(CResource *pa_poSrcRes,
const SFBInterfaceSpec *pa_pstInterfaceSpec,
const CStringDictionary::TStringId pa_nInstanceNameId, TForteByte *pa_acFBConnData, TForteByte *pa_acFBVarsData) :
CFunctionBlock(pa_poSrcRes, pa_pstInterfaceSpec, pa_nInstanceNameId, pa_acFBConnData, pa_acFBVarsData),
m_poEventChainExecutor(0),
mEventSourceEventEntry(this, cg_nExternalEventID){
}
virtual ~CEventSourceFB() {};
void setEventChainExecutor(CEventChainExecutionThread *pa_poEventChainExecutor) { m_poEventChainExecutor = pa_poEventChainExecutor; };
CEventChainExecutionThread * getEventChainExecutor(void) { return m_poEventChainExecutor; };
SEventEntry *getEventSourceEventEntry(void) { return &mEventSourceEventEntry; };
};
#define EVENT_SOURCE_FUNCTION_BLOCK_CTOR(fbclass) \
fbclass(const CStringDictionary::TStringId pa_nInstanceNameId, CResource *pa_poSrcRes) : \
CEventSourceFB( pa_poSrcRes, &scm_stFBInterfaceSpec, pa_nInstanceNameId, m_anFBConnData, m_anFBVarsData)
#endif /*_ESFB_H_*/