blob: fbe638dc34e3fefb73672bf59dfe6b623073201b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Johannes Kepler University
*
* 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:
* Alois Zoitl - initial implementation and rework communication infrastructure
*******************************************************************************/
#ifndef _GENFB_H_
#define _GENFB_H_
#include "funcbloc.h"
template <class T>
class CGenFunctionBlock : public T {
public:
/*!\brief The getFBType method is used by the Query command to get the instances correct type name (eg. "CLIENT_3_2")
* \return pointer to typename string
*/
CStringDictionary::TStringId getFBTypeId() const {
return mConfiguredFBTypeNameId;
}
bool configureFB(const char *paConfigString);
protected:
CGenFunctionBlock(CResource *paSrcRes, const CStringDictionary::TStringId paInstanceNameId);
virtual ~CGenFunctionBlock();
static void generateGenericInterfacePointNameArray(const char * const paPrefix,
CStringDictionary::TStringId* paNamesArayStart,
size_t paNumGenericDataPoints);
static void generateGenericDataPointArrays(const char * const paPrefix,
CStringDictionary::TStringId* paDataTypeNamesArrayStart,
CStringDictionary::TStringId* paNamesArrayStart, size_t paNumGenericDataPoints);
private:
/*! \brief parse the config string and generate the according interface specification
*
* This function is to be implemented by a generic fb and should parse the given interface
* string and generate an according interface specification. The resulting interface specification
* has to be set in the paInterfaceSpec parameter.
*
* @paConfigString the string sent from the id for configuring this fb (e.g., PUBLISH_2)
* @paInterfaceSpec the interface data structure where the resulting interface config must be stored
* @retval true if the string could be parsed, false if the string is invalid and no interface spec could be derived from it
*/
virtual bool createInterfaceSpec(const char *paConfigString, SFBInterfaceSpec &paInterfaceSpec) = 0;
void setConfiguredTypeNameId( CStringDictionary::TStringId paTypeNameId){
mConfiguredFBTypeNameId = paTypeNameId;
}
CStringDictionary::TStringId mConfiguredFBTypeNameId;
SFBInterfaceSpec mGenInterfaceSpec; //!< the interface spec for this specific instance of generic FB
TForteByte *mFBConnData;
TForteByte *mFBVarsData;
};
#include "genfb.tpp"
#endif /* _GENFB_H_ */